express zgłasza błąd jako `` body-parser deprecated undefined extended`

127

W mojej aplikacji node używam Express. wszystko działa dobrze, ale otrzymuję błąd w pliku cmd. Używam wszystkich zaktualizowanych modułów ...

mój kod:

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

Błąd:

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

Czy ktoś może mi pomóc zrozumieć ten problem?

3gwebtrain
źródło
@RamprasathSelvam - Tak, to było !!
3gwebtrain
@RamprasathSelvam - może coś jest nie tak z Twoim kodem, wersją modułu lub integracją, sprawdź
3gwebtrain
Gdzie głosujemy na najgorszy komunikat o błędzie w historii? Szczególnie biorąc pod uwagę, że jest to wysoce prawdopodobne, wiadomość wygląda jak worek przypadkowych słów.
przemówienie

Odpowiedzi:

263

Trzeba jawnie ustawiona extendedna bodyParser.urlencoded()ponieważ domyślna wartość ulegnie zmianie w następnej wersji z body-parser. Przykład:

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

Od wersji express4.16.0 możesz także:

app.use(express.urlencoded({ extended: true }))
mscdex
źródło
11
Co to robi?
Samarth Agarwal
6
@SamarthAgarwal Zgodnie z plikiem readme , używa qsmodułu do analizowania treści, co pozwala na analizę składni zagnieżdżonej tablicy, takiej jak test[foo][bar]=baz(która staje się {'test': {'foo': {'bar': 'baz'}}})
Bailey Parker
35

Uwaga: wraz express version => 4.16.0z body-parseroprogramowaniem pośrednim ponownie dodano do metod express.urlencoded()iexpress.json()

Które można wykorzystać jako:

app.use(express.urlencoded({extended: true})); 
app.use(express.json());   
Dhiral Kaniya
źródło
14

Błąd mówi, że musisz podać rozszerzoną opcję dla parsera treści, taką jak:

app.use(bodyParser.urlencoded({ extended: false }))
mfreitas
źródło
0

Począwszy od wersji Express 4.16.0, oczekuje się przekazania właściwości rozszerzonej wewnątrz bodyParser.urlencoded ()

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

Zobacz przykładową stronę dokumentacji npm.js: https://www.npmjs.com/package/body-parser#expressconnect-top-level-generic

tMan44wiz
źródło
0

Jeśli tu jesteś, po maju 2020 r. Oznacza to, że na pewno używasz węzła w wersji 13.12.0 .. A więc app.use (express.urlencoded ({extended: true}))

To na pewno zadziała dla Ciebie .... # pokój

SüŽan Bhattarai
źródło
-1

Ustaw limit 50 MB, aby uniknąć błędu obsługi danych., W limicie urlencode 50mb jest dla pomocy w przekazaniu adresu URL wyrzucania obrazu

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

    app.use(bodyParser.urlencoded({
        limit : '50mb', ///////// LIMIT for URL ENCODE (image data)
        extended : true
      }));
Gowtham Sooryaraj
źródło