Express 中的「錯誤:請求實體太大」
當請求超出預先定義值時,Express 會遇到「請求實體太大”錯誤檔案大小限制。這個錯誤可能令人費解,讓開發人員摸不著頭緒。讓我們深入探討問題並探索解決方案。
1.設定請求大小限制
Express 提供了對請求正文的最大大小設定限制的功能。在您的程式碼中,您已定義:
app.use(express.limit(100000000));
此行將限制設為 100 兆位元組。在 Fiddler 中檢查請求標頭後,您發現內容長度為 1.0787 兆位元組,完全在規定的限制內。
2.重置限制
儘管設定了限制,但 Express 可能不會遵守它。此模組由多個層組成,在特定情況下,限制可能會一路重置。即使您明確定義了限制,這也可能導致錯誤仍然存在。
3.修補模組(不建議)
作為臨時解決方法,一些用戶報告透過直接修補模組成功。然而,值得注意的是,這不是一個理想的解決方案,應謹慎對待。如果您決定走這條路線,請自行決定是否繼續。
4.使用Body-Parser(僅限Express 4 和Node.js 10.12)
在Express 4 及更高版本中,應使用body-parser 中間件而不是express.bodyParser() 來處理請求正文。明確聲明您的解析器,如下所示:
app.use(body-parser.json({limit: '50mb'})); app.use(body-parser.urlencoded({limit: '50mb', extended: true}));
如果未為 bodyParser.urlencoded() 指定擴充選項,則會拋出警告。
5.將bodyParser 移到頂部(僅限Express 4)
在Express 4 中,確保將app.use(bodyParser(...)) 放在app.use(express.json()) 或app.use(express.urlencoded()) 以避免覆蓋。
6.返回舊方式(僅限Express 4.16.0)
使用Express v4.16.0 及更高版本,您可以恢復到處理請求正文的原始方式:
app.use(express.json({limit: '50mb'})); app.use(express.urlencoded({limit: '50mb'}));
透過以上措施,可以有效解決Express中「Request Entity Too Large”錯誤。請記得使用最適合您的 Express 版本和環境的方法,以確保無縫操作。
以上是為什麼我在 Express 中收到「請求實體太大」錯誤,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!