it-swarm.com.de

bodyParser ist veraltet. express 4

Ich verwende Express 4.0 und mir ist bewusst, dass der Body Parser aus dem Express-Kern entfernt wurde. Ich verwende den empfohlenen Ersatz, wie auch immer ich ihn 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 angebliche 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);
363
Melbourne2991

Dies bedeutet, dass die Verwendung des Konstruktors bodyParser() seit dem 19.06.2014 veraltet ist.

app.use(bodyParser()); //Now deprecated

Sie müssen die Methoden jetzt separat aufrufen

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

Und so weiter.

Wenn Sie immer noch eine Warnung mit urlencoded erhalten, müssen Sie verwenden

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

Der Objektschlüssel extended config muss jetzt explizit übergeben werden, da er jetzt keinen Standardwert hat.

Wenn Sie Express> = 4.16.0 verwenden, wurde der Body-Parser unter den Methoden express.json() und express.urlencoded() neu hinzugefügt.

661
Ben Fortune

Willst du null Warnungen? Benutze es so:

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

Erläuterung: Der Standardwert der Option extended ist veraltet. Dies bedeutet, dass Sie den Wert true oder false explizit übergeben müssen.

148
smajl

In älteren Expressversionen mussten wir verwenden:

app.use(express.bodyparser()); 

weil der Body-Parser eine Middleware zwischen Node und Express war. Jetzt müssen wir es so benutzen:

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

body-parser ist eine Express-Middleware, die die Eingaben eines Formulars liest und 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()); // support json encoded bodies
   app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies

Wenn extended auf true gesetzt ist, werden entleerte (komprimierte) Körper aufgeblasen. Wenn extended auf false gesetzt ist, werden entleerte Körper zurückgewiesen.

5
Parth Raval

Was ist Ihre Meinung, um Express-Generator zu verwenden, wird es Skelett-Projekt zu generieren, um mit zu beginnen, erschien without deprecated messages in Ihrem Protokoll

führen Sie diesen Befehl aus

npm install express-generator -g

Erstellen Sie jetzt die neue Startanwendung von Express.js, indem Sie diesen Befehl in your Node projects folder eingeben.

express node-express-app

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

dann Go to the newly created project directory, install npm packages und start the app mit dem Befehl

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

Das habe ich beim Hinzufügen festgestellt

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

hilft, manchmal ist es eine Frage Ihrer Anfrage, wie Express damit umgeht.

Es kann zum Beispiel sein, dass Ihre Parameter im URL und nicht im body übergeben werden

In einem solchen Fall müssen Sie sowohl die Parameter body als auch rl erfassen und den jeweils verfügbaren Wert verwenden (wobei die body-Parameter im folgenden Fall bevorzugt werden).

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