express抛出错误,因为“ body解析器不建议使用,未定义扩展”


127

在我的节点应用程序中,我正在使用Express。一切正常,但是我在遇到错误cmd。我用的都是更新的模块...

我的代码:

var express = require('express');
var bodyParser = require('body-parser');
var jade = require('jade');
var app = express();
app.set('view engine', 'jade');
app.set('views', __dirname + '/views');
app.use(express.static(__dirname + '/public'));


app.use(bodyParser.json()); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded()); // to support URL-encoded bodies


app.get('/',function(req,res){
    res.render('index.jade');
});

app.get('/login',function(req,res){
    res.render('index.jade');
});

app.post('/login',function(req,res){
    console.log(req.body);
});

app.get('/signup',function(req,res){
    res.render('signup.jade');
});

var env = process.env.PORT || 3000;


app.listen(env, function(req, res){
    console.log('i am working!');
});

错误:

D:\myLogin>node app
body-parser deprecated undefined extended: provide extended option app.js:11:20 //why i am getting this?
i am working!
{ username: 'jbarif@gmail.com', password: 'pass' } // i am getting response

有什么可以帮助我理解这个问题的吗?


@RamprasathSelvam-是的,是的!
3gwebtrain '18 -10-4

@RamprasathSelvam-您的代码,模块版本或集成可能有问题,请检查
3gwebtrain

我们在哪里投票支持最糟糕的错误消息?特别是考虑到很可能发生这种情况,该消息看起来就像一堆随机单词。
spechter

Answers:


263

您必须明确设置extended为,bodyParser.urlencoded()因为默认值将在的下一个主要版本更改body-parser。例:

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

express4.16.0开始,您还可以执行以下操作:

app.use(express.urlencoded({ extended: true }))

11
这是做什么的?
2015年

5
@SamarthAgarwal根据自述文件,它使用qs模块来解析正文,从而可以解析诸如语法这样的嵌套数组,例如test[foo][bar]=baz(变成{'test': {'foo': {'bar': 'baz'}}}
Bailey Parker 2015年


14

该错误表明您需要为body分析器提供扩展选项,如下所示:

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

0

Express 4.16.0版本开始,您应该在bodyParser.urlencoded()内部传递扩展属性。

//  parse JSON-encoded bodies and URL-encoded bodies
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

有关示例,请参见npm.js文档页面:https ://www.npmjs.com/package/body-parser#expressconnect-top-level-generic


0

如果您在这里,则是在2020年5月之后,这意味着您肯定在使用v13.12.0版的节点。

这肯定会为您工作的。


-1

设置限制为50 MB,以避免数据处理错误。,在urlencode中限制为50mb,用于帮助您传递imageData抛出url

  app.use(bodyParser.json({
        limit : '50mb'    ///////// LIMIT for JSON
      }));

    app.use(bodyParser.urlencoded({
        limit : '50mb', ///////// LIMIT for URL ENCODE (image data)
        extended : true
      }));
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.