688 Stimmen

BodyParser ist veraltet express 4

Ich verwende Express 4.0 und bin mir bewusst, dass der Body Parser aus dem Express-Kern entfernt wurde. Ich verwende den empfohlenen Ersatz, bekomme jedoch folgende Fehlermeldung:

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 Middleware? 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);

17voto

himanshu yadav Punkte 1668

In älteren Versionen von Express mussten wir verwenden:

app.use(express.bodyparser()); 

weil body-parser ein Middleware zwischen Node und Express war. Jetzt müssen wir es wie folgt verwenden:

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

9voto

Parth Raval Punkte 3571

body-parser ist ein Stück Express-Middleware, das die Eingabe eines Formulars liest und sie als JavaScript-Objekt speichert, auf das über req.body zugegriffen werden kann. 'body-parser' muss installiert sein (über npm install --save body-parser). Weitere Informationen finden Sie unter: https://github.com/expressjs/body-parser

var bodyParser = require('body-parser');
app.use(bodyParser.json()); // unterstützt JSON-kodierte Körper
app.use(bodyParser.urlencoded({ extended: true })); // unterstützt kodierte Körper

Wenn extended auf true gesetzt ist, werden komprimierte Körper aufgeblasen; wenn extended auf false gesetzt ist, werden komprimierte Körper abgelehnt.

9voto

Statt bodyParser.json() einfach express.json() verwenden, Du möchtest body-parser nicht installieren

Zum Beispiel,

const express = require("express");

const app = express();
app.use(express.json());

1voto

Ian Mbae Punkte 129

Ich habe festgestellt, dass es manchmal hilfreich ist, wenn man Folgendes hinzufügt

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

manchmal hängt es jedoch davon ab, wie die Abfrage erfolgt, die bestimmt, wie express damit umgeht.

Zum Beispiel könnte es sein, dass Ihre Parameter in der URL anstelle des Körpers übergeben werden

In einem solchen Fall müssen Sie sowohl die Body- als auch die URL-Parameter erfassen und verwenden, je nachdem, was verfügbar ist (wobei die Body-Parameter im unten stehenden Fall bevorzugt werden)

app.route('/echo')
    .all((req,res)=>{
        let pars = (Object.keys(req.body).length > 0)?req.body:req.query;
        res.send(pars);
    });

1voto

Basheer AL-MOMANI Punkte 13273

Was halten Sie davon, express-generator zu verwenden? Es generiert ein Grundgerüst für ein Projekt, ohne veraltete Nachrichten, die in Ihrem Log erscheinen.

Führen Sie diesen Befehl aus

npm install express-generator -g

Erstellen Sie jetzt eine neue Express.js-Startanwendung, indem Sie diesen Befehl in Ihrem Node-Projektordner eingeben.

express node-express-app

Dieser Befehl sagt Express, eine neue Node.js-Anwendung mit dem Namen node-express-app zu generieren.

dann Gehen Sie zum neu erstellten Projektverzeichnis, installieren Sie npm-Pakete und starten Sie die App mit dem Befehl

cd node-express-app && npm install && npm start

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X