bodyParser está en desuso express 4

Resuelto Melbourne2991 asked hace 10 años • 13 respuestas

Estoy usando Express 4.0 y soy consciente de que el analizador corporal se eliminó del núcleo Express. Estoy usando el reemplazo recomendado, pero obtengo

body-parser deprecated bodyParser: use individual json/urlencoded middlewares server.js:15:12 body-parser deprecated urlencoded: explicitly specify "extended: true" for extended parsing node_modules/body-parser/index.js:74:29

¿Dónde encuentro este supuesto middleware? ¿O no debería recibir este error?

var express     = require('express');
var server      = express();
var bodyParser  = require('body-parser');
var mongoose    = require('mongoose');
var passport    = require('./config/passport');
var routes      = require('./routes');

mongoose.connect('mongodb://localhost/myapp', function(err) {
    if(err) throw err;
});

server.set('view engine', 'jade');
server.set('views', __dirname + '/views');

server.use(bodyParser()); 
server.use(passport.initialize());

// Application Level Routes
routes(server, passport);

server.use(express.static(__dirname + '/public'));

server.listen(3000);
Melbourne2991 avatar Jun 20 '14 21:06 Melbourne2991
Aceptado

Significa que el uso del bodyParser() constructor ha quedado obsoleto a partir del 19 de junio de 2014.

app.use(bodyParser()); //Now deprecated

Ahora necesitas llamar a los métodos por separado.

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

Etcétera.

Si todavía recibes una advertencia, urlencodeddebes usar

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

La extendedclave del objeto de configuración ahora debe pasarse explícitamente, ya que ahora no tiene un valor predeterminado.

Si está utilizando Express >= 4.16.0, el analizador del cuerpo se ha vuelto a agregar en los métodos express.json()y express.urlencoded().

Ben Fortune avatar Jun 20 '2014 15:06 Ben Fortune

¿ Quieres cero advertencias ? Úselo así:

// Express v4.16.0 and higher
// --------------------------
const express = require('express');

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

// For Express version less than 4.16.0
// ------------------------------------
const bodyParser = require('body-parser');

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

Explicación : El valor predeterminado de la extendedopción ha quedado obsoleto, lo que significa que debe pasar explícitamente un valor verdadero o falso.

Nota para Express 4.16.0 y superiores : se ha vuelto a agregar el analizador de cuerpos para brindar soporte de análisis del cuerpo de la solicitud listo para usar.

Jan Peša avatar Jun 21 '2014 18:06 Jan Peša

Si estás usando express > 4.16, puedes usar express.json()yexpress.urlencoded()

Se han agregado middleware y para brindar soporte de análisis del cuerpo de la solicitud listo para usar express.json(). express.urlencoded()Esto utiliza el expressjs/body-parsermódulo que se encuentra debajo, por lo que las aplicaciones que actualmente requieren el módulo por separado pueden cambiar a los analizadores integrados.

Source Express 4.16.0 - Fecha de lanzamiento: 2017-09-28

Con este,

const bodyParser  = require('body-parser');

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

se convierte,

const express = require('express');

app.use(express.urlencoded({ extended: true }));
app.use(express.json());
Sridhar avatar Jan 24 '2020 07:01 Sridhar