我正在阅读使用Node和Express进行Web开发这本书,并且遇到了障碍。
我被指示将以下内容放在我的应用程序文件中,但看起来body-parser
已弃用且不起作用。我怎样才能实现相同的功能?
这是我目前的代码:
app.use(require('body-parser')());
app.get('/newsletter', function(req, res){
// we will learn about CSRF later...for now, we just
// provide a dummy value
res.render('newsletter', { csrf: 'CSRF token goes here' });
});
app.post('/process', function(req, res){
console.log('Form (from querystring): ' + req.query.form);
console.log('CSRF token (from hidden form field): ' + req.body._csrf);
console.log('Name (from visible form field): ' + req.body.name);
console.log('Email (from visible form field): ' + req.body.email); res.redirect(303, '/thank-you');
});
答案 0 :(得分:7)
只是想更新这个线程,因为我尝试了上面的解决方案并收到了未定义的信息。 Express 4.16+ 已经实现了他们自己的 body-parser 版本,所以你不需要在你的项目中添加依赖项。你可以在 express 本地运行它
app.use(express.json()); //Used to parse JSON bodies
app.use(express.urlencoded()); //Parse URL-encoded bodies
来源:https://medium.com/@mmajdanski/express-body-parser-and-why-may-not-need-it-335803cd048c
答案 1 :(得分:3)
来自:bodyParser is deprecated express 4
这意味着自2014-06-19起不再使用bodyParser()构造函数。
"SELECT * FROM " ...
您现在需要单独调用方法
app.use(bodyParser()); //Now deprecated
等等。
答案 2 :(得分:0)
不要再使用 body-parser
从 Express 4.16+ 开始,正文解析功能已经内置到 express 中
你可以做到
app.use(express.urlencoded({extended: true}));
app.use(express.json()) // To parse the incoming requests with JSON payloads
直接来自express,无需安装body-parser。
因此您可以使用 npm uninstall body-parser
卸载 body-parser,只需使用上面的代码即可。