无法在router.post中获取正文,但可以使用app.post Node js / express

我的快速应用程序有问题。 我正在做的是在汉德巴尔有一个forms。 我只想根据这个教程注册一个用户: https : //www.learn2crack.com/2016/09/android-user-registration-login-node-client.html,但我有点调整到一个Web应用程序。

所以我创build了这样的forms:

<div style="text-align:center"> <form method="POST" action="/registerUser" enctype="application/x-www-form-urlencoded"> Username: <input type="text" name="name" value=""/><br> Email: <input type="text" name="email" value=""/><br> Password: <input type="text" name="password" value=""/><br> Repeat password: <input type="text" name="repeat_password" value=""></input><br> <input type="submit" value="Register!"></input> </form> </div 

喜欢这个。 然后,当我打电话给路由器来处理它的结果(registerUser)时,我得到的是req.body.name是未定义的(顺便说一句,我检查,req.query,req.params等,它都是未定义的只是内容不到那里到路由器,所以当我这样做的时候:

 router.post('/registerUser', (req, res) => { console.log("YO THERE WE GO"); console.log(req.body); ///..... rest 

这是行不通的,这是不确定的。 但是,如果我在我的app.js文件夹(路线是分开的,但与其他调用,这是GET)工作,它显然适用于这个简单的代码:

 app.post('/registerUser',function(req,res){ console.log(req.body); }) 

对于应用程序,我有以下几点:

 'use strict'; // app.js const express = require('express'); const session = require('express-session'); const app = express(); const path = require('path'); const bodyParser = require('body-parser'); app.use(express.static(path.join(__dirname, 'public'))); const router = require('./routes/router'); app.use(router); const mongoose = require('mongoose'); const validate = require("validate.js"); const logger = require('morgan'); require('./db'); // const User = mongoose.model('User'); const Item = mongoose.model('Item'); const Pattern = mongoose.model('Pattern'); app.set('view engine', 'hbs'); app.set('views', __dirname + '/views'); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); 

和路由器:

“严格使用”;

 require('../db'); const express = require('express'); const router = express.Router(); const mongoose = require('mongoose'); const Pattern = mongoose.model('Pattern'); 

什么是错误的,我得到它使用的应用程序,但不使用路由器?

先谢谢你!

只要把app.use(bodyParser.json()); 在路由呼叫之前

 'use strict'; const mongoose = require('mongoose'); const validate = require("validate.js"); const logger = require('morgan'); require('./db'); // const User = mongoose.model('User'); const Item = mongoose.model('Item'); const Pattern = mongoose.model('Pattern'); const router = require('./routes/router'); // app.js const express = require('express'); const session = require('express-session'); const app = express(); const path = require('path'); const bodyParser = require('body-parser'); app.use(express.static(path.join(__dirname, 'public'))); app.set('view engine', 'hbs'); app.set('views', __dirname + '/views'); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(router);