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.