bodyParser已弃用express 4

我使用Express 4.0,我意识到身体parsing器已经被取出了快速核心,我使用推荐的替代品,但是我越来越

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

我在哪里可以find这个假设的中间件? 或者我不应该得到这个错误?

 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); 

这意味着使用bodyParser() 构造函数已被弃用 ,截至bodyParser()日。

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

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

 app.use(bodyParser.urlencoded()); app.use(bodyParser.json()); 

等等。

如果您仍然使用urlencoded发出警告,则需要使用

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

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

如果使用Express> = 4.16.0,则在express.json()express.urlencoded()方法下已重新添加bodyparsing器。

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

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

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

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

 app.use(express.bodyparser()); 

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

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

body-parser是一个快速的中间件,它读取一个表单的input,并将其存储为可通过req.body访问的JavaScript对象req.body '必须安装(通过npm install --save body-parser )更多信息请参见: https://github.com/expressjs/body-parser

  var bodyParser = require('body-parser'); app.use(bodyParser.json()); // support json encoded bodies app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies 

extended设置为真时,放气(压缩)的机构将被充气; 当extended设置为false时,放气的物体被拒绝。

我发现,而添加

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

帮助,有时这是你的查询,决定如何expression处理它的问题。

例如,它可能是你的参数在URL中而不是在body中传递

在这种情况下,您需要捕获bodyurl参数,并使用可用的参数(在下面的情况下优先selectbody参数)

 app.route('/echo') .all((req,res)=>{ let pars = (Object.keys(req.body).length > 0)?req.body:req.query; res.send(pars); }); 

你有什么意见使用快递发电机它将生成骨架项目开始, without deprecated messages出现在您的日志

运行这个命令

 npm install express-generator -g 

现在,通过在your Node projects folder键入此命令来创build新的Express.js初学者应用程序。

 express node-express-app 

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

然后Go to the newly created project directoryinstall npm packages并使用该命令start the app

 cd node-express-app && npm install && npm start