Expressjs Body-Parser : how to solve "TypeError: Cannot read property 'name' of undefined" - already reviewed all previouse ansers
Expressjs Body-Parser : how to solve "TypeError: Cannot read property 'name' of undefined" - already reviewed all previouse ansers
代码工作正常,直到我想从表单中获取数据,我使用 expressjs
并且已经知道 body-parser 但是当我使用 router.post('/register',function())
时我得到这个错误:
我得到的错误
TypeError: Cannot read property 'name' of undefined at
e:16\passport\controllers\users.js:20:23 at Layer.handle [as
handle_request]
(e:16\passport\node_modules\express\lib\router\layer.js:95:5) at
next
(e:16\passport\node_modules\express\lib\router\route.js:131:13) at
Route.dispatch
(e:16\passport\node_modules\express\lib\router\route.js:112:3) at
Layer.handle [as handle_request]
我的 app.js
我已经在用 body-parser
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
我在post这条路由
时收到错误信息
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
文件
<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>
尝试像最后一样设置路由器,或者绝对确保你的 bodyParser 在它之前执行。
您需要在 body-parser 之前使用“./controllers”!
body-parser 应该在任何控制器之前被调用,以便解析请求主体并将其附加到 req.
代码工作正常,直到我想从表单中获取数据,我使用 expressjs
并且已经知道 body-parser 但是当我使用 router.post('/register',function())
时我得到这个错误:
我得到的错误
TypeError: Cannot read property 'name' of undefined at e:16\passport\controllers\users.js:20:23 at Layer.handle [as handle_request] (e:16\passport\node_modules\express\lib\router\layer.js:95:5) at next (e:16\passport\node_modules\express\lib\router\route.js:131:13) at Route.dispatch (e:16\passport\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request]
我的 app.js
我已经在用 body-parser
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
我在post这条路由
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
文件
<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>
尝试像最后一样设置路由器,或者绝对确保你的 bodyParser 在它之前执行。
您需要在 body-parser 之前使用“./controllers”! body-parser 应该在任何控制器之前被调用,以便解析请求主体并将其附加到 req.