提问者:小点点

express 4不推荐使用bodyParser


我使用的是Express4.0并且我知道body parser已经从express内核中删除了,我使用的是推荐的替换,但我得到的却是

body-parser deprecated bodyparser:使用单独的JSON/urlencoded中间件服务器。js:15:12 body-parser deprecated urlencoded:显式指定“extended:true”用于扩展解析node_modules/body-parser/index。js:74:29

我在哪里可以找到这些所谓的中间件?或者我不应该得到这个错误?

var express     = require('express');
var server      = express();
var bodyParser  = require('body-parser');
var mongoose    = require('mongoose');
var passport    = require('./config/passport');
var routes      = require('./routes');

mongoose.connect('mongodb://localhost/myapp', function(err) {
    if(err) throw err;
});

server.set('view engine', 'jade');
server.set('views', __dirname + '/views');

server.use(bodyParser()); 
server.use(passport.initialize());

// Application Level Routes
routes(server, passport);

server.use(express.static(__dirname + '/public'));

server.listen(3000);

共2个答案

匿名用户

这意味着使用bodyparser()构造函数已被弃用,从2014-06-19开始。

app.use(bodyParser()); //Now deprecated

现在需要分别调用这些方法

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

等等。

如果使用urlencoded仍然收到警告,则需要使用

app.use(bodyParser.urlencoded({
  extended: true
}));

现在需要显式传递extended配置对象键,因为它现在没有默认值。

如果您使用的是Express>=4.16.0,则在Express.json()Express.URLencode()方法下重新添加了正文解析器。

匿名用户

想要零警告?这样使用:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));

说明:extended选项的默认值已被弃用,这意味着您需要显式传递true或false值。