Express löst einen Fehler aus, da "Body-Parser veraltet, undefiniert, erweitert"


127

In meiner Node-App verwende ich Express. alles funktioniert gut, aber ich bekomme Fehler in der cmd. Ich benutze alle aktualisierten Module ...

Mein Code:

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!');
});

Error:

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: 'jbarif@gmail.com', password: 'pass' } // i am getting response

Kann mir jemand helfen, dieses Problem zu verstehen?


@ RamprasathSelvam - Ja, das war es !!
3gwebtrain

@ RamprasathSelvam - möglicherweise stimmt etwas mit Ihrem Code, der Version des Moduls oder der Integration nicht, überprüfen Sie bitte
3gwebtrain

Wo stimmen wir für die schlimmste Fehlermeldung aller Zeiten? Besonders wenn man bedenkt, dass dies sehr wahrscheinlich ist, sieht die Nachricht wie eine Tüte zufälliger Wörter aus.
Spechter

Antworten:


263

Sie müssen explizit extendedfür bodyParser.urlencoded()da der Standardwert in der nächsten großen Version ändern wird von body-parser. Beispiel:

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

Seit express4.16.0 können Sie auch Folgendes tun:

app.use(express.urlencoded({ extended: true }))

11
Was macht das?
Samarth Agarwal

5
@ SamarthAgarwal Laut der Readme- Datei wird das qsModul verwendet, um den Body zu analysieren, wodurch ein verschachteltes Array wie die Syntax analysiert werden kann, wie z. B. test[foo][bar]=baz(was wird {'test': {'foo': {'bar': 'baz'}}})
Bailey Parker

35

Achtung: Mit express version => 4.16.0der body-parserMiddleware wurde wieder unter den Methoden express.urlencoded()und hinzugefügtexpress.json()

Welches kann verwendet werden als:

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

14

Der Fehler besagt, dass Sie die erweiterte Option für den Body-Parser wie folgt bereitstellen müssen:

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


0

Wenn Sie nach Mai 2020 hier sind, bedeutet dies, dass Sie sicher den Knoten der Version v13.12.0 verwenden. Also, app.use (express.urlencoded ({erweitert: true}))

Dies wird sicherlich für Sie funktionieren ... # Frieden


-1

Legen Sie ein Limit von 50 MB fest, um Fehler bei der Datenverarbeitung zu vermeiden. Im Urlencode-Limit von 50 MB können Sie die imageData-Throw-URL übergeben

  app.use(bodyParser.json({
        limit : '50mb'    ///////// LIMIT for JSON
      }));

    app.use(bodyParser.urlencoded({
        limit : '50mb', ///////// LIMIT for URL ENCODE (image data)
        extended : true
      }));
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.