LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-10-24

現象

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を参照してください。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0