Ich verwende Express 4.0 und bin mir bewusst, dass der Body Parser aus dem Express Core entfernt wurde. Ich verwende den empfohlenen Ersatz, aber ich bekomme
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
Wo finde ich diese angeblichen Middlewares? oder sollte ich diesen Fehler nicht bekommen?
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);
quelle
extended
dascurl --data "user[email]=foo&user[password]=bar" localhost:3000/login
in vom Server empfangen werden würdenreq.body
wie{ user[email]: "foo", ...}
währendreq.body
wäre{user: {email: "foo", ... }}
mitextended: true
.Willst du keine Warnungen ? Verwenden Sie es so:
Erläuterung : Der Standardwert der
extended
Option ist veraltet. Dies bedeutet, dass Sie den Wert true oder false explizit übergeben müssen.quelle
app.use(bodyParser.json()).use(bodyParser.urlencoded({ extended: true }));
In älteren Versionen von Express mussten wir Folgendes verwenden:
weil Body-Parser eine Middleware zwischen Node und Express war. Jetzt müssen wir es wie folgt verwenden:
quelle
Wenn Sie Express> verwenden
4.16
, können Sieexpress.json()
und verwendenexpress.urlencoded()
Source Express 4.16.0 - Erscheinungsdatum: 28.09.2017
Mit diesem,
wird,
quelle
Wenn
extended
true eingestellt ist, werden entleerte (komprimierte) Körper aufgeblasen. Wenn derextended
Wert auf false gesetzt ist, werden entleerte Körper zurückgewiesen.quelle
Was ist Ihre Meinung zur Verwendung des Express-Generators, der zunächst ein Skelettprojekt generiert,
without deprecated messages
das in Ihrem Protokoll angezeigt wird?Führen Sie diesen Befehl aus
Erstellen Sie jetzt eine neue Express.js-Starteranwendung, indem Sie diesen Befehl eingeben
your Node projects folder
.Dieser Befehl weist express an, eine neue Node.js-Anwendung mit dem Namen zu generieren
node-express-app
.dann
Go to the newly created project directory
,install npm packages
undstart the app
mit dem Befehlquelle
Das habe ich beim Hinzufügen gefunden
hilft, manchmal ist es eine Frage Ihrer Abfrage, die bestimmt, wie Express damit umgeht.
Zum Beispiel könnte es sein, dass Ihre Parameter in der URL und nicht im Text übergeben werden
In einem solchen Fall müssen Sie sowohl die Body- als auch die URL- Parameter erfassen und die verfügbaren verwenden (wobei die Body-Parameter im folgenden Fall bevorzugt werden).
quelle
app.use(bodyParser.urlencoded({extended: true}));
Ich habe das gleiche Problem, aber diese Arbeit für mich. Sie können diesen erweiterten Teil ausprobieren.
quelle