Express.js中

时间:2015-05-08 14:24:05

标签: node.js express

我正在阅读使用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');
});

3 个答案:

答案 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,只需使用上面的代码即可。