Express で「エラー: リクエスト エンティティが大きすぎます」
リクエストが事前定義された制限を超えると、Express で「リクエスト エンティティが大きすぎます」エラーが発生しますファイルサイズの制限。このエラーは不可解であり、開発者は頭を悩ませることになります。問題を深く掘り下げて解決策を探ってみましょう。
1.リクエスト サイズ制限の設定
Express では、リクエスト本文の最大サイズに制限を設定する機能が提供されます。コードでは次のように定義しています:
app.use(express.limit(100000000));
この行は制限を 100 MB に設定します。 Fiddler でリクエスト ヘッダーを調べると、コンテンツの長さが 1.0787 MB であることがわかります。これは、規定の制限内に十分収まります。
2.制限のリセット
制限を設定しているにもかかわらず、Express は制限を遵守しない可能性があります。モジュールは複数のレイヤーで構成されており、特定のケースでは、途中で制限がリセットされる可能性があります。これにより、制限を明示的に定義した後でもエラーが継続する可能性があります。
3.モジュールへのパッチ適用 (非推奨)
一時的な回避策として、一部のユーザーはモジュールに直接パッチを適用することで成功したと報告しています。ただし、これは理想的な解決策ではないため、慎重に対処する必要があることに注意することが重要です。このルートを選択する場合は、ご自身の判断で進めてください。
4. Body-Parser の使用 (Express 4 および Node.js 10.12 のみ)
Express 4 以降では、リクエスト本文の処理に、express.bodyParser() の代わりに body-parser ミドルウェアを使用する必要があります。次のようにパーサーを明示的に宣言します:
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 の「リクエスト エンティティが大きすぎます」エラーに効果的に対処できます。シームレスな操作を確保するために、Express のバージョンと環境に最も適切な方法を必ず使用してください。
以上がExpress で「リクエスト エンティティが大きすぎます」エラーが発生するのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。