Javascript 使用主体解析器时,req.body返回未定义

Javascript 使用主体解析器时,req.body返回未定义,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试构建一个API,该API接收POST req以创建用户,但是我的req.body请求中都出现了未定义的错误。我的应用程序是这样设置的(为简洁起见进行了简化): 在我的用户路由文件中被Express Router调用的用户控制器 /controllers/user.js userController.addUser = function(req, res) { let user = new User(); user.username = req.body.username;

我正在尝试构建一个API,该API接收POST req以创建用户,但是我的
req.body
请求中都出现了未定义的错误。我的应用程序是这样设置的(为简洁起见进行了简化):

在我的用户路由文件中被Express Router调用的用户控制器

/controllers/user.js

userController.addUser = function(req, res) {
  let user = new User();

  user.username = req.body.username;
  user.first_name = req.body.first_name;
  user.last_name = req.body.last_name;
  user.email = req.body.email;
  user.type = req.body.user_type

  // This returns undefined as does all other req.body keys
  console.log("REQ.BODY.EMAIL IS: " + req.body.email);
} 
用户路由文件:

/routes/user.js-需要上面的用户控制器

router.post('/user/create', userController.addUser);
主应用程序: 除使用req.body.*外,所有路由和控制器均按照我的测试工作

index.js-主应用程序文件

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use('/api', routes);

我浏览了Express文档和无数的StackOverflow帖子,但运气不佳。如果您需要进一步澄清,请告诉我

我的问题是如何将主体发送到API端点。我使用的是表单数据,而不是用邮递员编码的x-www-form-url。用户错误

有时版本更改后的
主体解析器
似乎不起作用,在这种情况下,只需使用以下命令,这将从
主体解析器
中删除依赖项:

router.post('/user/create', (req, res, next) => {

    let body = [];

    req.on('error', (err) => {
      console.error(err);
    }).on('data', (chunk) => {
      // Data is present in chunks without body-parser
      body.push(chunk);
    }).on('end', () => {
      // Finally concat complete body and will get your input
      body = Buffer.concat(body).toString();
      console.log(body);

      // Set body in req so next function can use
      // body-parser is also doing something similar 
      req.body = body;

      next();
    });

}, userController.addUser);

我们可以查看您的post请求吗?请尝试
console.log(req.body)
@sLaks我这样做了,这就是我发现它未定义的原因。我不确定是否有两个解析器在其中工作parallel@crescentfresh请同时将您的客户端代码发布到您的web服务器上。有可能你只是没有对请求进行任何设置。