Node.js 在express 4.x中,请求主体未定义
我刚从3.x迁移到express.js 4.8.7。 我在Express4.x中遇到错误,“req.body”未定义 当我搜索它的时候。我发现,我必须安装“body parser”模块。即使在安装了“body parser”模块之后,我仍然没有定义“req.body”。 我不确定我需要做什么。下面是我的app.js代码Node.js 在express 4.x中,请求主体未定义,node.js,express,Node.js,Express,我刚从3.x迁移到express.js 4.8.7。 我在Express4.x中遇到错误,“req.body”未定义 当我搜索它的时候。我发现,我必须安装“body parser”模块。即使在安装了“body parser”模块之后,我仍然没有定义“req.body”。 我不确定我需要做什么。下面是我的app.js代码 var express = require('express') , path = require('path') , redis = require("redis") , mo
var express = require('express')
, path = require('path')
, redis = require("redis")
, mongoose = require('mongoose')
, favicon = require('serve-favicon')
, compression = require('compression')
, bodyParser = require('body-parser')
, methodOverride = require('method-override')
, errorHandler = require('errorhandler')
, cookieParser = require('cookie-parser')
, morgan = require('morgan')
, multer = require('multer')
, session = require('express-session');
var app = express();
var router = express.Router();
router.use(function(req, res, next) {
console.log('%s %s %s', req.method, req.url, req.path);
next();
});
var routes = require('./routes')(app);
mongoose.connect('mongodb://localhost/abc');
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(favicon(__dirname + '/public/img/favicon.ico'));
app.use(morgan('dev'));
app.use(methodOverride());
app.use(session({resave: true, saveUninitialized: true, secret: 'uwotm8'}));
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(bodyParser.json({ type: 'application/vnd.api+json' }));
app.use(multer({ dest: './uploads/'}));
app.use(methodOverride('X-HTTP-Method'));
app.use(methodOverride('X-HTTP-Method-Override'));
app.use(methodOverride('X-Method-Override'));
app.use(compression({'threshold': 512}));
app.use(express.static(path.join(__dirname, 'public')));
if ('development' == app.get('env')) {
app.use(errorHandler());
}
app.listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
我的路由器回调函数发生错误
app.route('/xhr/abc').post(function (req, res) {
if (req.xhr) {
var language = req.headers["accept-language"];
...
var reqBody = req.body;
...
}
您需要确保您的路由位于包含的中间件之后,因为中间件/路由/等在Express 4中是按顺序执行的。请仅将问题标记到相关代码,并且请学会仅发布相关代码。仅当“正文分析”失败时才显示该方法。请查找已编辑的帖子。感谢您在
app.use()
之后设置app.route('/xhr/abc')…
(尤其是body parser
和multer
)?您好,谢谢这解决了我的问题。。。。