我正在使用express 4.0,我知道主体解析器已经从express核心中取出,我正在使用推荐的替换,但我正在获得
bodyParser:使用单独的json/urlencoded中间件server.js:15:12
对扩展解析显式指定"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);
你对使用express-generator的意见是什么,它将生成框架项目开始,没有弃用的消息出现在你的日志中
执行此命令
npm install express-generator -g
现在,在Node项目文件夹中输入这个命令创建新的Express.js starter应用程序。
express node-express-app
该命令告诉express生成名为node-express-app的新Node.js应用程序。
然后进入新创建的项目目录,安装npm包并使用命令启动应用程序
cd node-express-app && npm install && npm start
我是在加法的时候发现的
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
有帮助,有时取决于您的查询决定express如何处理它。
例如,可能是在URL中传递参数,而不是在正文中传递参数
在这种情况下,您需要捕获正文参数和url参数,并使用任何可用的参数(在下面的情况中优先使用正文参数)
app.route('/echo')
.all((req,res)=>{
let pars = (Object.keys(req.body).length > 0)?req.body:req.query;
res.send(pars);
});
这意味着使用bodyParser()构造函数已被弃用,截至2014-06-19。
app.use(bodyParser()); //Now deprecated
现在需要分别调用这些方法
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
等等。
如果你仍然得到一个urlencoded警告,你需要使用
app.use(bodyParser.urlencoded({
extended: true
}));
扩展配置对象键现在需要显式传递,因为它现在没有默认值。
如果您正在使用Express >= 4.16.0,则在Express .json()和Express .urlencoded()方法下重新添加了body解析器。