Korzystam z express 4.0 i zdaję sobie sprawę, że parser body został wyjęty z rdzenia express, używam zalecanego zamiennika, jednak otrzymuję
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
Gdzie znajdę te domniemane oprogramowanie pośrednie? czy nie powinienem otrzymywać tego błędu?
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);
źródło
extended
zrobić?curl --data "user[email]=foo&user[password]=bar" localhost:3000/login
zostaną odebrane przez serwer wreq.body
jak{ user[email]: "foo", ...}
natomiastreq.body
będzie{user: {email: "foo", ... }}
zextended: true
.Chcesz zero ostrzeżeń ? Użyj tego w ten sposób:
Objaśnienie : Domyślna wartość
extended
opcji została uznana za przestarzałą, co oznacza, że musisz jawnie przekazać wartość true lub false.źródło
app.use(bodyParser.json()).use(bodyParser.urlencoded({ extended: true }));
W starszych wersjach ekspresu musieliśmy używać:
ponieważ parser body był oprogramowaniem pośrednim między węzłem a ekspresowym. Teraz musimy go używać w następujący sposób:
źródło
Jeśli używasz ekspresowego>
4.16
, możesz użyćexpress.json()
iexpress.urlencoded()
Source Express 4.16.0 - Data wydania: 28.09.2017
Z tym,
staje się,
źródło
Kiedy
extended
jest ustawiony na true, wówczas deflowane (ściśnięte) ciała zostaną napompowane; gdyextended
ma wartość false, deflowane ciała są odrzucane.źródło
Jakie jest Twoje zdanie na temat użycia ekspresowego generatora, który wygeneruje szkielet projektu na początek,
without deprecated messages
pojawił się w twoim loguuruchom to polecenie
Teraz utwórz nową aplikację startową Express.js, wpisując to polecenie w
your Node projects folder
.To polecenie mówi ekspresowi, aby wygenerował nową aplikację Node.js o nazwie
node-express-app
.Następnie
Go to the newly created project directory
,install npm packages
istart the app
z użyciem komendyźródło
Znalazłem to podczas dodawania
pomaga, czasem to od twojego zapytania zależy, w jaki sposób ekspres go obsługuje.
Na przykład może się zdarzyć, że parametry zostaną przekazane w adresie URL, a nie w treści
W takim przypadku musisz uchwycić zarówno parametry treści, jak i adresu URL i użyć dowolnej z dostępnych opcji (z preferencją dla parametrów treści w poniższym przypadku)
źródło
app.use(bodyParser.urlencoded({extended: true}));
Mam ten sam problem, ale dla mnie to działa. Możesz wypróbować tę rozszerzoną część.
źródło