bodyParser está obsoleto express 4


Estoy usando express 4.0 y soy consciente de que body parser se ha sacado del núcleo de express, estoy usando el reemplazo recomendado, sin embargo estoy obteniendo

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 estos supuestos middlewares? ¿o no debería estar recibiendo 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);
Author: Melbourne2991, 2014-06-20

7 answers

Significa que el uso de la bodyParser() constructor ha sido obsoleto, a partir de 2014-06-19.

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

Ahora necesita llamar a los métodos por separado

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

Y así sucesivamente.

Si todavía está recibiendo una advertencia con urlencoded debe usar

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

La clave de objeto de configuración extended ahora debe pasarse explícitamente, ya que ahora no tiene ningún valor predeterminado.

Si está utilizando Express >= 4.16.0, body parser se ha vuelto a agregar bajo los métodos express.json() y express.urlencoded().

 607
Author: Ben Fortune,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-25 15:41:10

¿Quieres cero advertencias ? Úsalo así:

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

Explicación: El valor predeterminado de la opción extended ha sido obsoleto, lo que significa que debe pasar explícitamente el valor verdadero o falso.

 145
Author: smajl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-17 08:26:28

En versiones anteriores de express, tuvimos que usar:

app.use(express.bodyparser()); 

Porque express era un middleware entre nodo y body-parser. Ahora tenemos que usarlo como:

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
 10
Author: himanshu yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-31 08:06:39

Body-parser es una pieza de middleware express que lee la entrada de un formulario y la almacena como javascript objeto accesible a través de req.body 'body-parser' debe ser instalado (vía npm install --save body-parser) Para más información ver: https://github.com/expressjs/body-parser

   var bodyParser = require('body-parser');
   app.use(bodyParser.json()); // support json encoded bodies
   app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies

Cuando extended se establece en true, entonces los cuerpos desinflados (comprimidos) se inflarán; cuando extended se establece en false, los cuerpos desinflados se rechazan.

 5
Author: Parth Raval,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-07 06:41:46

Encontré que al agregar

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

Ayuda, a veces es una cuestión de su consulta que determina cómo express lo maneja.

Por ejemplo, podría ser que sus parámetros se pasen en la URL en lugar de en el cuerpo

En tal caso, debe capturar los parámetros body y url y usar lo que esté disponible (con preferencia por los parámetros body en el caso siguiente)

app.route('/echo')
    .all((req,res)=>{
        let pars = (Object.keys(req.body).length > 0)?req.body:req.query;
        res.send(pars);
    });
 1
Author: Ian Mbae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-17 21:07:58

¿Cuál es su opinión para utilizar express-generator se generará proyecto esqueleto para empezar, without deprecated messages apareció en su registro

Ejecute este comando

npm install express-generator -g

Ahora, crea un nuevo Express.js starter application by escriba este comando en your Node projects folder.

express node-express-app

Ese comando le dice a express que genere un nuevo nodo.aplicación js con el nombre node-express-app.

Entonces Go to the newly created project directory, install npm packages y start the app usando el comando

cd node-express-app && npm install && npm start
 1
Author: Basheer AL-MOMANI,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-26 11:56:39

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

Tengo el mismo problema pero esto funciona para mí. Puedes probar esta parte extendida.

 -2
Author: Mehedi Abdullah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-31 18:44:52