Javascript Expressjs主体解析器:如何解决;TypeError:无法读取属性';名称';“未定义”的定义:已经审阅了所有以前的答案

Javascript Expressjs主体解析器:如何解决;TypeError:无法读取属性';名称';“未定义”的定义:已经审阅了所有以前的答案,javascript,node.js,express,body-parser,Javascript,Node.js,Express,Body Parser,代码工作正常,直到我想从表单中获取数据,我使用expressjs,并且已经知道body解析器,但是当我使用router.post('/register',function())时,我得到以下错误: <pre> <form method="post" action="/users/register"> <input type="text" name="name"> <input type="text" name="usern

代码工作正常,直到我想从表单中获取数据,我使用
expressjs
,并且已经知道body解析器,但是当我使用
router.post('/register',function())
时,我得到以下错误:

<pre>
<form method="post" action="/users/register">
  <input type="text"  name="name">          
  <input type="text"  name="username">
  <input type="email" name="email">
 <button type="submit" >Submit</button>
   </form>

</pre>
我得到的错误

TypeError:无法读取处未定义的属性“name” e:\2016\passport\controllers\users.js:20:23位于Layer.handle[as] 处理请求] (e:\2016\passport\node\u modules\express\lib\router\layer.js:95:5) 下一个 (e:\2016\passport\node\u modules\express\lib\router\route.js:131:13) 路线调度 (e:\2016\passport\node\u modules\express\lib\router\route.js:112:3) Layer.handle[作为handle\u请求]

我的
app.js
我已经在使用
body解析器了

var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var exphbs = require('express-handlebars');
var expressValidator = require('express-validator');
var flash = require('connect-flash');
var session = require('express-session');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var mongo = require('mongodb');
var mongoose = require('mongoose');
var http=require('http');
mongoose.connect('mongodb://localhost/loginapp');
var db = mongoose.connection;
var app=express();

// set up routers
app.use(require('./controllers'));


// set up view engine
app.set('view engine' , "ejs");
app.set("views",path.join(__dirname,"views"));


// set up public files
app.use( express.static('public'));



// set up BodyParser Middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());

// Express Port
 http.createServer(app).listen(process.env.Port || 2000,function(){
 console.log('login app Run!');
  });
路由器文件
users.js
我发布此路由时收到错误消息

router.post('/register',function(req,resp){

    var name= req.body.name;
    var username= req.body.username;
    var email= req.body.email;
    var password= req.body.password;
    var password2= req.body.password2;
    resp.render('register');

    });
我的
ejs
文件


提交

尝试将路由器设置为最后一个路由器,或者确保在执行bodyParser之前执行bodyParser。

您需要在bodyParser之前执行“/controllers”!
应该在任何控制器之前调用正文解析器,以便解析请求正文并将其附加到req。

谢谢您回答我的问题,您节省了我的时间谢谢您回答我的问题,您节省了我的时间