Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8835

Node.js Express4 でエラー "request entity too large" 発生時の対応法

$
0
0

現象

Node.js + Express4 で Request body に JSON 形式の大量のデータ(100kb以上)を添付すると、
HTTP Response で 400 Bad Request , error: "request entity too large" が発生した。

発生時環境:
* Node.js 12.19.0
* TypeScript 4.0.3
* express 4.17.1

(プロジェクトは express-generator-typescript 1.7.1 で作成)

解決策

Express の初期設定時に、下記のように Request body size の上限を大きく設定する。

Server.ts
app.use(express.json({limit:'100mb'}));

原因

Express 4 の Request Body サイズ上限のデフォルト値が 100kb であるため。
Expressの API リファレンスに記載されています。)

謝辞

こちらも参考にしました。(ですが、執筆時では middleware の body-parser の設定を変更する必要はありませんでした。)
* https://qiita.com/PianoScoreJP/items/3fbcebc43ebf821074d8
* https://qiita.com/Safire/items/dee77bf01fe35deb1535

補足

上記の解決策は、 Request body の Content-Type が JSON の場合の対応ですが、
raw データを受信する場合は、

app.use(express.raw({limit:'10gb'});

url-encoded データを受信する場合は、

app.use(express.urlencoded({limit:'100tb'});

のように設定すれば良いようです。(これらは未確認)
詳細は、Expressの API リファレンスを参照してください。
また、指定可能な補助単位(k,g,t, etc.) はbytesを参照してください。


Viewing all articles
Browse latest Browse all 8835

Trending Articles