【问题标题】:Cannot read property 'username' of undefined - JavaScript无法读取未定义的属性“用户名” - JavaScript
【发布时间】:2020-04-13 04:55:41
【问题描述】:

我正在尝试使用 Postman 应用程序发送帖子,我的 Js 代码实际上就是我将在此处发布的代码,它代表 POST。 我的要求是:

{

    "username" : "UserAbc",
    "password" : "password"
}

错误是我在标题中写的那个。有任何想法吗?谢谢!


    app.post('/register', (req, res) => {
      const username = req.body.username;
      const password = req.body.password;

      if (!username || !password) {
        res.json({
          error: 'Missing required parameters'
        });
        return;
      }

      let user = new User({
        username: username,
        password: password,
      })
        user.save();

      let tokenKey = uuidv1();
      let newToken = new Token({
        token: tokenKey,
        expire: ~~(Date.now() / 1000) + 3600 * 24,
      })
      newToken.save();

      res.status(200).send({ token: tokenKey });
    });

【问题讨论】:

  • 在post方法中,在const username...上方添加console.log(req);然后打开浏览器控制台刷新页面。看看req 究竟是什么,因为我怀疑这不是你所期望的。

标签: javascript amazon-web-services server request postman


【解决方案1】:

它看起来像: const username = req.body.username;

req 不包含body

试试这行代码,看看你的错误是否消失。 const username = (req.body || {}).username;

这不是一个解决方案,而是一种查看这是否是问题的方法。如果您的错误变成了其他问题,那么您已经发现了问题。

【讨论】:

  • 谢谢!现在我收到:{“错误”:“缺少必需的参数”}。我认为我的 Json 格式现在是问题所在。
【解决方案2】:

根据错误,您似乎没有使用正文解析中间件,您必须执行以下操作:

app.use(express.json());

为了在请求对象上设置body 属性。

More details

【讨论】:

  • 非常感谢!
【解决方案3】:

您的 POST 数据似乎没有在服务器上被解析。

这可能有几个原因。

  1. 确保您有一个正文解析器,例如 expressjs/body-parser

    在您运行npm install body-parser 之后,然后在您的代码中,您需要在任何使用req.body 的路由之前添加此

    const bodyParser = require('body-parser');
    
    app.use(bodyParser.json())
    
  2. 如果您已经有一个正文解析器,那么在 Postman 中,正文 mime-type 未设置为 application/json,请确保将类型设置为 JSON:

【讨论】:

    猜你喜欢
    • 2021-11-04
    • 1970-01-01
    • 2019-07-27
    • 2016-05-08
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2017-03-09
    相关资源
    最近更新 更多