W mojej aplikacji node używam Express. wszystko działa dobrze, ale otrzymuję błąd w pliku cmd
. Używam wszystkich zaktualizowanych modułów ...
mój kod:
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!');
});
Błąd:
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
Czy ktoś może mi pomóc zrozumieć ten problem?
Odpowiedzi:
Trzeba jawnie ustawiona
extended
nabodyParser.urlencoded()
ponieważ domyślna wartość ulegnie zmianie w następnej wersji zbody-parser
. Przykład:Od wersji
express
4.16.0 możesz także:źródło
qs
modułu do analizowania treści, co pozwala na analizę składni zagnieżdżonej tablicy, takiej jaktest[foo][bar]=baz
(która staje się{'test': {'foo': {'bar': 'baz'}}}
)Uwaga: wraz
express version => 4.16.0
zbody-parser
oprogramowaniem pośrednim ponownie dodano do metodexpress.urlencoded()
iexpress.json()
Które można wykorzystać jako:
źródło
Błąd mówi, że musisz podać rozszerzoną opcję dla parsera treści, taką jak:
źródło
Począwszy od wersji Express 4.16.0, oczekuje się przekazania właściwości rozszerzonej wewnątrz bodyParser.urlencoded ()
Zobacz przykładową stronę dokumentacji npm.js: https://www.npmjs.com/package/body-parser#expressconnect-top-level-generic
źródło
Jeśli tu jesteś, po maju 2020 r. Oznacza to, że na pewno używasz węzła w wersji 13.12.0 .. A więc app.use (express.urlencoded ({extended: true}))
To na pewno zadziała dla Ciebie .... # pokój
źródło
źródło