error de lanzamiento rápido como `analizador de cuerpo desaprobado extendido indefinido`

127

En mi aplicación de nodo, estoy usando express. todo funciona bien, pero recibo un error en el cmd. Yo uso todos son módulos actualizados ...

mi código :

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

¿Puede alguien ayudarme a entender este problema por favor?

3gwebtrain
fuente
@RamprasathSelvam - ¡Sí, lo fue!
3gwebtrain
@RamprasathSelvam: puede haber algún problema con su código, versión del módulo o integración, consulte
3gwebtrain
¿Dónde votamos por el peor mensaje de error? Especialmente teniendo en cuenta que es muy probable que esto suceda, el mensaje solo parece una bolsa de palabras aleatorias.
Spechter

Respuestas:

263

Usted tiene que establecer explícitamente extendedpara bodyParser.urlencoded()desde el valor por defecto va a cambiar en la próxima versión principal de body-parser. Ejemplo:

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

Desde express4.16.0, también puedes hacer:

app.use(express.urlencoded({ extended: true }))
mscdex
fuente
11
¿Qué hace esto?
Samarth Agarwal
66
@SamarthAgarwal Según el archivo Léame , utiliza el qsmódulo para analizar el cuerpo, lo que permite analizar una matriz anidada como la sintaxis como test[foo][bar]=baz(que se convierte {'test': {'foo': {'bar': 'baz'}}})
Bailey Parker
35

Atención: con express version => 4.16.0el body-parsermiddleware se volvió a agregar bajo los métodos express.urlencoded()yexpress.json()

Que se puede usar como:

app.use(express.urlencoded({extended: true})); 
app.use(express.json());   
Dhiral Kaniya
fuente
14

El error dice que debe proporcionar la opción extendida para el analizador de cuerpo de la siguiente manera:

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

A partir de la versión Express 4.16.0, se espera que pase la propiedad extendida dentro de bodyParser.urlencoded ()

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

Consulte la página de documentación de npm.js para ver una muestra: https://www.npmjs.com/package/body-parser#expressconnect-top-level-generic

tMan44wiz
fuente
0

Si está aquí, después de mayo de 2020, eso significa que seguramente está usando el nodo de la versión v13.12.0 .. Entonces, app.use (express.urlencoded ({extended: true}))

Esto seguramente va a funcionar para usted ... # paz

SüŽan Bhattarai
fuente
-1

Establezca el límite de 50 MB para evitar el error de manejo de datos., En urlencode limit 50mb es para ayudarlo a pasar la imagen

  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
fuente