bodyParser弃用Express 4

我正在使用Express 4.0,并且我知道主体解析器已从Express核心中移除,我正在使用推荐的替代产品,但是我正在

body-parser deprecated bodyParser: use individual json/urlencoded middlewares server.js:15:12 body-parser deprecated urlencoded: explicitly specify "extended: true" for extended parsing 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);
2020/03/17 18:05:57

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

我有同样的问题,但这对我有用。您可以尝试此扩展部分。

番长蛋蛋Davaid2020/03/17 18:05:57

想要零警告像这样使用它:

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

说明extended不建议使用选项的默认值,这意味着您需要显式传递true或false值。

乐十三2020/03/17 18:05:57

您对使用express-generator会产生骨架项目的想法是什么,without deprecated messages出现在您的日志中

运行此命令

npm install express-generator -g

现在,通过在中键入以下命令来创建新的Express.js入门应用程序your Node projects folder

express node-express-app

该命令告诉express生成名称为的新Node.js应用程序node-express-app

然后Go to the newly created project directoryinstall npm packagesstart the app使用命令

cd node-express-app && npm install && npm start
神无老丝Davaid2020/03/17 18:05:57

在旧版的express中,我们必须使用:

app.use(express.bodyparser()); 

因为body-parser是node和express之间的中间件。现在我们必须像这样使用它:

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
伽罗JinJin西门2020/03/17 18:05:57

这意味着2014年6月19日起,不赞成使用bodyParser() 构造函数

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

您现在需要分别调用方法

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

等等。

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

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

extended现在的配置对象的关键需要明确的被传递,因为它现在已经没有默认值。

如果您使用的快递> = 4.16.0,身体解析器已根据这些方法重新加入express.json()express.urlencoded()