помилка кидків експрес як "застарілий синтаксичний аналізатор тіла невизначений розширений"


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

@RamprasathSelvam - можливо, у вашому коді, версії модуля чи інтеграції щось не так, будь ласка, перевірте
— 3gwebtrain

Де ми голосуємо за найгірше повідомлення про помилку? Особливо враховуючи, що це дуже імовірно, це повідомлення просто схоже на мішок випадкових слів.
— spechter

Відповіді:


263

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

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

З express4.16.0 ви також можете:

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

11
Що це робить?
— Самарт Агарвал

6
@SamarthAgarwal Відповідно до readme , він використовує qsмодуль для розбору тіла, що дозволяє аналізувати вкладений масив, як синтаксис, такий як test[foo][bar]=baz(який стає {'test': {'foo': {'bar': 'baz'}}})
— Бейлі Паркер


14

Помилка говорить про те, що вам потрібно надати розширений параметр для аналізатора тіла так:

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

0

Починаючи з експрес- версії 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, це означає, що ви напевно використовуєте вузол версії v13.12.0 .. Отже, app.use (express.urlencoded ({extension: true}))

Це, звичайно, працює для вас .... # мир


-1

Встановіть ліміт 50 Мб, щоб уникнути помилки обробки даних.

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

    app.use(bodyParser.urlencoded({
        limit : '50mb', ///////// LIMIT for URL ENCODE (image data)
        extended : true
      }));
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.