bodyParser está en desuso express 4
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);
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, urlencoded
debes usar
app.use(bodyParser.urlencoded({
extended: true
}));
La extended
clave 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()
.
¿ 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 extended
opció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.
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 elexpressjs/body-parser
mó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());