node.js express 抛出错误,因为“body-parser deprecated undefined extended”

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25471856/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-02 17:48:06  来源:igfitidea点击:

express throws error as `body-parser deprecated undefined extended`

node.jsexpress

提问by 3gwebtrain

In my node app, I am using express. all works fine, But i am getting error in the cmd. I use all are updated modules...

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

my code :

我的代码:

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!');
});

Error:

错误:

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: '[email protected]', password: 'pass' } // i am getting response

Can any help me to understand this issue please?

任何人都可以帮助我理解这个问题吗?

回答by mscdex

You have to explicitly set extendedfor bodyParser.urlencoded()since the default value is going to change in the next major versionof body-parser. Example:

你必须明确地设置extendedbodyParser.urlencoded()默认值会在接下来的主要版本改变body-parser。例子:

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

Since express4.16.0, you can also do:

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

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

回答by Dhiral Kaniya

Attention:With express version => 4.16.0the body-parsermiddleware was added back under the methods express.urlencoded()and express.json()

注意:由于express version => 4.16.0body-parser中间件被下方法加回express.urlencoded()express.json()

Which can be used as:

可以用作:

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

回答by mfreitas

The error says you need to provide the extended option for the body-parser like so:

该错误表示您需要为 body-parser 提供扩展选项,如下所示:

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

回答by tMan44wiz

As from Expressversion 4.16.0, you're expected to pass in extendedproperty inside the bodyParser.urlencoded()

Express版本 4.16.0 开始,您应该在bodyParser.urlencoded() 中传入扩展属性

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

See npm.js documentation page for sample: https://www.npmjs.com/package/body-parser#expressconnect-top-level-generic

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

回答by Gowtham Sooryaraj

Set limit 50 MB for avoid data handling error., In urlencode limit 50mb is for help you to pass imageData throw url

设置限制 50 MB 以避免数据处理错误。,在 urlencode 限制 50 MB 是为了帮助您传递 imageData throw url

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

    app.use(bodyParser.urlencoded({
        limit : '50mb', ///////// LIMIT for URL ENCODE (image data)
        extended : true
      }));