はじめに
コジマです。
フロントサイド:Vue.js
バックエンド:Node.js
を使用したシステムの開発をしていて、
データ量の多いリクエストをaxiosで投げたら「net::ERR_EMPTY_RESPONSE」が出てくるという事案が発生。。。
これを対処したときのメモです。
これを真似すれば必ず解決できることを保障する記事ではありませんが。
一つの観点として同じ状況になった人の役に立てるかなと思って備忘的に記事を残します。
表現として正しくないことがあるかもしれません。
そのときは申し訳ありません。
Node.jsのソケットがタイムアウトしてた
Node.jsのデフォルトのタイムアウトが2分なのだそうで。
https://nodejs.org/docs/latest-v12.x/api/http.html#http_server_timeout
以下のように修正してタイムアウト時間を延ばしました。
ここでは10分としています。
修正前
await app.listen(port)
修正後
const server = await app.listen(port) server.timeout = 1000 * 60 * 10
さいごに
アーキの知識がまだまだだなと思った次第。
ずっとaxiosのタイムアウトだと思ってたので、ここに至るまでにaxiosのソースコード読んだりしてつらい思いしたので
覚書として残すことにしました。
APIがめっちゃ重い時に発生したエラーは
- axios(ajax)のタイムアウト
- クエリのタイムアウト
- Node.js(ソケット)のタイムアウト
のどこかを調べなきゃいけないんだなと学びになりました。
この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!
以上、コジマでした。