ExpressJS错误:Body-Parser已弃用

时间:2015-05-28 04:25:20

标签: node.js express deprecated body-parser

问题 我正在尝试构建一个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 个答案:

答案 0 :(得分:10)

var app = express();

// configure body-parser

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

答案 1 :(得分: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 :(得分:2)

除非你有拼写错误,否则请更改:

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

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

到:

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

请查看请求和响应对象执行的操作here

答案 3 :(得分: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());,您不应该收到错误。

答案 4 :(得分:0)

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

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

app.use(express.json())

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

答案 5 :(得分:0)

您不必再安装 body-parser

app.use(express.urlencoded({extended: true}));
app.use(express.json()) // To parse the incoming requests with JSON payloads

如果你有 Express 4.16+,这有效