No meu aplicativo de nó, estou usando express. tudo funciona bem, mas estou recebendo erro no cmd
. Eu uso todos são módulos atualizados ...
meu 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!');
});
Erro:
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
Alguém pode me ajudar a entender esse problema, por favor?
Respostas:
Você deve definir explicitamente
extended
para,bodyParser.urlencoded()
pois o valor padrão será alterado na próxima versão principal dobody-parser
. Exemplo:Desde a
express
versão 4.16.0, você também pode:fonte
qs
módulo para analisar o corpo que permite a um conjunto aninhado como sintaxe para ser analisado, tais comotest[foo][bar]=baz
(que se torna{'test': {'foo': {'bar': 'baz'}}}
)Atenção: Com
express version => 4.16.0
obody-parser
middleware foi incluído novamente nos métodosexpress.urlencoded()
eexpress.json()
Que pode ser usado como:
fonte
O erro diz que você precisa fornecer a opção estendida para o analisador de corpo da seguinte forma:
fonte
A partir do Express versão 4.16.0, espera-se que você transmita propriedades estendidas dentro do bodyParser.urlencoded ()
Consulte a página de documentação do npm.js. para obter uma amostra: https://www.npmjs.com/package/body-parser#expressconnect-top-level-generic
fonte
Se você está aqui, depois de maio de 2020, isso significa que você certamente está usando o nó da versão v13.12.0. Então, app.use (express.urlencoded ({extended: true}))
Isso certamente vai funcionar para você .... # paz
fonte
fonte