请求我的MEAN应用程序后req.body.username未定义

当我向我的MEAN应用程序发出请求时,我将req.body.username设置为debugging时未定义。 以下是我的路线文件:

var mongoose = require('mongoose'); var express = require('express'); var passport = require('passport'); var User = mongoose.model('User'); var auth = require('../auth'); var router = express.Router(); router.post('/users', function (req, res, next) { var user = new User(); user.username = req.body.username; user.email = req.body.email; user.setPassword(req.body.password); user.save(function (err) { if (err) { return next(err); } return res.json({ token: user.to() }) }); }); router.post('/users/login', function(req, res, next){ if(!req.body.user.email){ return res.status(422).json({errors: {email: "can't be blank"}}); } if(!req.body.user.password){ return res.status(422).json({errors: {password: "can't be blank"}}); } passport.authenticate('local', {session: false}, function(err, user, info){ if(err){ return next(err); } if(user){ user.token = user.generateJWT(); return res.json({user: user.toAuthJSON()}); } else { return res.status(422).json(info); } })(req, res, next); }); router.get('/user', auth.required, function(req, res, next){ User.findById(req.payload.id).then(function(user){ if(!user){ return res.sendStatus(401); } return res.json({user: user.toAuthJSON()}); }).catch(next); }); router.put('/user', auth.required, function(req, res, next){ User.findById(req.payload.id).then(function(user){ if(!user){ return res.sendStatus(401); } if(typeof req.body.user.username !== 'undefined'){ user.username = req.body.user.username; } if(typeof req.body.user.email !== 'undefined'){ user.email = req.body.user.email; } if(typeof req.body.user.bio !== 'undefined'){ user.bio = req.body.user.bio; } if(typeof req.body.user.image !== 'undefined'){ user.image = req.body.user.image; } if(typeof req.body.user.password !== 'undefined'){ user.setPassword(req.body.user.password); } return user.save().then(function(){ return res.json({user: user.toAuthJSON()}); }); }).catch(next); }); module.exports = router; 

下面是我的app.js:

 var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var passport = require('passport'); var mongoose = require('mongoose'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); mongoose.connect('mongodb://localhost/conduit'); require('./models/Users'); require('./routes/index'); require('./routes/auth'); var users=require('./routes/api/users'); require('./routes/api/index'); app.use('/', users); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app; 

我有我的努力find一个解决scheme,但迄今不幸的是不能这样做。 我尝试了一些build议,比如改变bodyParser中间件的顺序,但是到目前为止一直没有做到这一点。