экспресс выдает ошибку, поскольку `body-parser deprecated undefined extended`

127

В моем приложении узла я использую экспресс. все работает нормально, но я получаю ошибку в файле 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

Может ли кто-нибудь помочь мне разобраться в этой проблеме, пожалуйста?

3gwebtrain
источник
@RamprasathSelvam - Да, это было !!
3gwebtrain
@RamprasathSelvam - может что-то не так с вашим кодом, версией модуля или интеграции, пожалуйста, проверьте
3gwebtrain
Где мы голосуем за худшее сообщение об ошибке? Учитывая, что это очень вероятно, сообщение выглядит как набор случайных слов.
Spechter

Ответы:

264

Вы должны явно указать extendedна bodyParser.urlencoded()так значение по умолчанию будет меняться в следующей версии с body-parser. Пример:

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

Начиная с expressверсии 4.16.0, вы также можете:

app.use(express.urlencoded({ extended: true }))
MSCDEX
источник
11
Что это значит?
Самарт Агарвал
6
@SamarthAgarwal Согласно readme , он использует qsмодуль для синтаксического анализа тела, что позволяет анализировать вложенный массив, такой как синтаксис, например test[foo][bar]=baz(который становится {'test': {'foo': {'bar': 'baz'}}})
Бейли Паркер
35

Внимание: с express version => 4.16.0помощью body-parserпромежуточного программного обеспечения было добавлено обратно методы express.urlencoded()иexpress.json()

Что можно использовать как:

app.use(express.urlencoded({extended: true})); 
app.use(express.json());   
Дирал Кания
источник
14

В сообщении об ошибке говорится, что вам нужно предоставить расширенную опцию для парсера тела следующим образом:

app.use(bodyParser.urlencoded({ extended: false }))
mfreitas
источник
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

tMan44wiz
источник
0

Если вы находитесь здесь после мая 2020 года, это означает, что вы наверняка используете узел версии v13.12.0 .. Итак, app.use (express.urlencoded ({extended: true}))

Это наверняка сработает для вас .... # peace

Сюган Бхаттарай
источник
-1

Установите ограничение 50 МБ, чтобы избежать ошибки обработки данных. В ограничении urlencode 50 МБ поможет вам передать URL-адрес imageData

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

    app.use(bodyParser.urlencoded({
        limit : '50mb', ///////// LIMIT for URL ENCODE (image data)
        extended : true
      }));
Гаутам Сорьярадж
источник