"Ralat: Minta Entiti Terlalu Besar" dalam Ekspres
Express menghadapi ralat "Minta Entiti Terlalu Besar" apabila permintaan melebihi pratakrif had saiz fail. Ralat ini boleh membingungkan, menyebabkan pembangun menggaru kepala mereka. Mari kita selami isu ini dan teroka penyelesaian.
1. Menetapkan Had Saiz Permintaan
Express menyediakan keupayaan untuk menetapkan had pada saiz maksimum badan permintaan. Dalam kod anda, anda telah menentukan:
app.use(express.limit(100000000));
Barisan ini menetapkan had kepada 100 megabait. Setelah meneliti pengepala permintaan dalam Fiddler, anda melihat kandungan panjang 1.0787 megabait, yang berada dalam had yang ditetapkan.
2. Menetapkan Semula Had
Walaupun menetapkan had, Express mungkin tidak mematuhinya. Modul ini terdiri daripada berbilang lapisan, dan dalam kes tertentu, had mungkin akan ditetapkan semula sepanjang perjalanan. Ini boleh menyebabkan ralat berterusan walaupun anda telah menentukan hadnya dengan jelas.
3. Menampal Modul (Tidak Disyorkan)
Sebagai penyelesaian sementara, sesetengah pengguna telah melaporkan kejayaan dengan menampal modul secara terus. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ini bukan penyelesaian yang ideal dan harus didekati dengan berhati-hati. Jika anda memutuskan untuk mengambil laluan ini, teruskan mengikut budi bicara anda sendiri.
4. Menggunakan Body-Parser (Express 4 dan Node.js 10.12 Sahaja)
Dalam Express 4 dan ke atas, middleware body-parser harus digunakan bukannya express.bodyParser() untuk mengendalikan badan permintaan. Isytiharkan penghurai anda secara eksplisit seperti berikut:
app.use(body-parser.json({limit: '50mb'})); app.use(body-parser.urlencoded({limit: '50mb', extended: true}));
Jika pilihan lanjutan tidak dinyatakan untuk bodyParser.urlencoded(), amaran akan dilemparkan.
5. Mengalihkan bodyParser ke Atas (Express 4 Sahaja)
Dalam Express 4, pastikan anda meletakkan app.use(bodyParser(...)) sebelum app.use(express.json()) atau app.use(express.urlencoded()) untuk mengelakkan override.
6. Kembali ke Cara Lama (Express 4.16.0 Sahaja)
Dengan Express v4.16.0 dan lebih baharu, anda boleh kembali kepada cara asal mengendalikan badan permintaan:
app.use(express.json({limit: '50mb'})); app.use(express.urlencoded({limit: '50mb'}));
Dengan menggunakan langkah-langkah ini, anda boleh menangani ralat "Minta Entiti Terlalu Besar" dengan berkesan dalam Express. Ingat untuk menggunakan kaedah yang paling sesuai untuk versi Ekspres dan persekitaran anda untuk memastikan operasi lancar.
Atas ialah kandungan terperinci Mengapakah saya mendapat ralat \'Permintaan Entiti Terlalu Besar\' dalam Ekspres dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!