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 }));
现在需要显式传递extended
configuration对象键,因为它现在没有默认值。
如果使用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中传递
在这种情况下,您需要捕获body和url参数,并使用可用的参数(在下面的情况下优先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 directory
, install npm packages
并使用该命令start the app
cd node-express-app && npm install && npm start