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: '[email protected]', password: 'pass' } // i am getting response

Kann mir jemand helfen, dieses Problem zu verstehen?

3gwebtrain
quelle
@ 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 }))
mscdex
quelle
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());   
Dhiral Kaniya
quelle
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 }))
mfreitas
quelle
0

Ab Express Version 4.16.0 wird erwartet, dass Sie eine erweiterte Eigenschaft in bodyParser.urlencoded () übergeben.

//  parse JSON-encoded bodies and URL-encoded bodies
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

Ein Beispiel finden Sie auf der Dokumentationsseite von npm.j: https://www.npmjs.com/package/body-parser#expressconnect-top-level-generic

tMan44wiz
quelle
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

SüŽan Bhattarai
quelle
-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
      }));
Gowtham Sooryaraj
quelle