ExpressJS错误:Body-Parser已弃用

11

问题 我正在尝试构建一个 Node.js API,当编写我的 server.js 文件时,我的代码看起来像这样:

var express = require('express');
var express = require('body-parser');

var app = express();
app.use(bodyParser.json());

app.get('/api/posts', function(req,res) {
res.json([
    {
        username: 'oscar',
        body: 'hello'
    }

])
})

app.listen(3000, function() {
console.log('Server Listening on', 3000)
})

但是,在命令提示符中我得到了这个错误:

body-parser deprecated bodyParser: use individual json.urlencoded
middlewares server.js:4:11
body-parser deprecated undefined extended: provide extended option
node_modules\body-parser\index.js:85:29

我尝试将这个改成:

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

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

像其他帖子建议的那样,但它仍然给出了相同的错误。现在不确定该怎么办!请帮忙。

谢谢!

6个回答

13
var app = express();

// configure body-parser

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

5

我遇到了类似的弃用警告。这是我的原始代码:

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

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

添加{extended: true}解决了我的警告。以下是更改的代码:

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

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

2
除非您打错了字,否则请更改为:
var express = require('body-parser');

var app = express();
app.use(bodyParser.json());

收件人:

var bodyParser   = require('body-parser');
var app = express();
app.use(bodyParser());

请在这里查看请求和响应对象的作用。


2

实际上,您不需要使用以下代码行:app.use(bodyParser.urlencoded({extended: true}));

我已经通过以下代码使其正常工作:

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

app.use(bodyParser.json());

只要您有app.user(bodyParser.json());,就不应该出现错误。

2

不要使用body-parser

在新版本的Express中,已经内置了body解析器。因此,您可以简单地使用以下代码:

app.use(express.json()) //For JSON requests
app.use(express.urlencoded({extended: true}));

来自直接快递

您可以使用 npm uninstall body-parser 卸载 body-parser。



然后,您可以简单地从 req.body 获取 POST 内容。

app.post("/yourpath", (req, res)=>{

    var postData = req.body;

    //Or for string JSON body, you can use this

    var postData = JSON.parse(req.body);
});

2

在当前的express.js版本(≥ 4.16)中,您不再需要使用body-parser模块。

相反,使用已经包含在express中的json解析器:

app.use(express.json())

来源: https://expressjs.com/en/changelog/4x.html#4.16.0

本次更新的主要改进是对路由系统的增强。Express.js现在支持使用正则表达式匹配路由路径,同时还提供了更加灵活的路由处理方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接