express melempar kesalahan karena `body-parser deprecated undefined extended`

127

Di aplikasi node saya, saya menggunakan express. semua berfungsi dengan baik, Tapi saya mendapatkan kesalahan di cmd. Saya menggunakan semua modul yang diperbarui ...

kode saya:

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

Kesalahan:

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

Adakah yang bisa membantu saya untuk memahami masalah ini?

3gwebtrain
sumber
@RamprasathSelvam - Ya, benar !!
3gwebtrain
@RamprasathSelvam - mungkin ada yang salah dengan kode Anda, versi modul atau integrasi, silakan periksa
3gwebtrain
Di mana kami memilih pesan kesalahan terburuk yang pernah ada? Terutama mengingat hal ini sangat mungkin terjadi, pesannya hanya terlihat seperti sekantong kata-kata acak.
pembicara

Jawaban:

264

Anda harus secara eksplisit mengatur extendeduntuk bodyParser.urlencoded()sejak nilai default akan berubah dalam versi utama berikutnya dari body-parser. Contoh:

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

Sejak express4.16.0, Anda juga dapat melakukan:

app.use(express.urlencoded({ extended: true }))
mscdex.dll
sumber
11
Apa fungsinya?
Samarth Agarwal
6
@SamarthAgarwal Menurut readme , ia menggunakan qsmodul untuk mengurai tubuh yang memungkinkan array bersarang seperti sintaks untuk diurai seperti test[foo][bar]=baz(yang menjadi {'test': {'foo': {'bar': 'baz'}}})
Bailey Parker
35

Perhatian: Dengan express version => 4.16.0ini body-parsermiddleware ditambahkan kembali di bawah metode express.urlencoded()danexpress.json()

Yang bisa digunakan sebagai:

app.use(express.urlencoded({extended: true})); 
app.use(express.json());   
Dhiral Kaniya
sumber
14

Kesalahan mengatakan Anda perlu memberikan opsi yang diperluas untuk pengurai tubuh seperti:

app.use(bodyParser.urlencoded({ extended: false }))
mfreitas.dll
sumber
0

Mulai dari Express versi 4.16.0, Anda diharapkan meneruskan properti yang diperluas di dalam bodyParser.urlencoded ()

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

Lihat halaman dokumentasi npm.js untuk contoh: https://www.npmjs.com/package/body-parser#expressconnect-top-level-generic

tMan44wiz
sumber
0

Jika Anda berada di sini, setelah Mei-2020 itu berarti Anda pasti menggunakan node versi v13.12.0 .. Jadi, app.use (express.urlencoded ({extended: true}))

Pasti ini akan berhasil untukmu .... # peace

SüŽan Bhattarai
sumber
-1

Tetapkan batas 50 MB untuk menghindari kesalahan penanganan data., Dalam batas kode url, 50mb adalah untuk membantu Anda melewati url gambarData

  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
sumber