express genera l'errore come "body-parser deprecato non definito esteso"


127

Nella mia app nodo, sto usando express. tutto funziona bene, ma sto ricevendo un errore in cmd. Uso tutti i moduli aggiornati ...

il mio codice:

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

Errore:

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

Qualcuno può aiutarmi a capire questo problema per favore?


@RamprasathSelvam - Sì, lo era !!
3gwebtrain,

@RamprasathSelvam - potrebbe esserci qualcosa che non va nel tuo codice, versione del modulo o integrazione, controlla
3gwebtrain

Dove votiamo per il peggior messaggio di errore di sempre? Soprattutto considerando che è molto probabile che accada, il messaggio sembra solo un sacco di parole casuali.
spettro

Risposte:


263

È necessario impostare in modo esplicito extendedper bodyParser.urlencoded()poiché il valore predefinito è destinata a cambiare nella prossima versione di body-parser. Esempio:

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

Dalla express4.16.0, puoi anche fare:

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

11
Cosa fa questo?
Samarth Agarwal,

6
@SamarthAgarwal Secondo il readme , utilizza il qsmodulo per analizzare il corpo che consente di analizzare un array nidificato come la sintassi come test[foo][bar]=baz(che diventa {'test': {'foo': {'bar': 'baz'}}})
Bailey Parker,

35

Attenzione: con express version => 4.16.0il body-parsermiddleware è stato aggiunto di nuovo sotto i metodi express.urlencoded()eexpress.json()

Quale può essere usato come:

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

14

L'errore dice che è necessario fornire l'opzione estesa per il body-parser in questo modo:

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


0

Se sei qui, dopo maggio 2020, significa che stai sicuramente usando il nodo della versione v13.12.0 .. Quindi, app.use (express.urlencoded ({extended: true}))

Questo sicuramente funzionerà per te .... # pace


-1

Impostare il limite di 50 MB per evitare errori di gestione dei dati., Nel codice url il limite di 50 MB è per aiutarti a passare imageData lancio url

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

    app.use(bodyParser.urlencoded({
        limit : '50mb', ///////// LIMIT for URL ENCODE (image data)
        extended : true
      }));
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.