「自分だけビルドが落ちる」を追いかけたら、原因はコードではなくルーターだった

「自分だけビルドが落ちる」を追いかけたら、原因はコードではなくルーターだった

26/06/09 17:56

「昨日まで普通に通っていたビルドが、今日から自分のPCだけ最後で固まる」。同じブランチで同僚はすんなり成功。コードは1行も変えていない——。原因にたどり着くまで、エラーログの“嘘”に何度も惑わされました。犯人は意外すぎる場所、今日替えたばかりのWi-Fiルーター。同じ沼にハマった人のために、切り分けの全手順を残します。

Next.jsのビルドが自分だけ失敗する。犯人はWi-Fiルーターだった

ある日、いつも通り next build を実行すると、

Failed to build /(user)/too-many-requests/page
because it took more than 60 seconds.

というエラーが出ました。

コンパイルOK、TypeScriptもOK、なのに最後だけ失敗します。しかも毎回同じ場所。

export const dynamic = "force-static";

最初は当然、このファイルを疑いました。

でも、おかしい

  • 同僚は同じブランチで通る

  • 該当コードは長らく更新されていない

失敗するのは私だけ

コードが原因なら全員落ちるはずです。


※著者は在宅勤務です。同僚とネットワークが異なります

罠①:「このファイルが悪い」は誤解だった

問題のページは、ただの429エラー画面。

fetchもasyncもない、ピュアなコンポーネント。60秒もかからんだろぉぉぉ


調べてみると、force-static によってビルド時に親レイアウトが実行され、その中のAPI通信で止まっていました。

エラーメッセージが指していた場所は、「原因」ではなく「最後に実行された場所」でした。

罠②:「バックエンドが遅い」も外れ

念のため curl で確認。curl https://example.com

HTTP 200 | total=0.05s

爆速200

ネットワークも問題なさそう...


タイムアウトを300秒に上げて再ビルドすると、

UND_ERR_HEADERS_TIMEOUT

curlは返るのに

ビルド中のNodeだけが300秒待って死ぬ。これは...


分かるわけなくclaude codeに聞く。

誰かがアイドル接続を裏で殺していた

「①接続 → ②90秒アイドル → ③再利用」を試す

  req#1 fresh             OK 200  54ms     ← 新規接続:正常
  req#2 reused-after-idle OK 200  47ms
  req#3 immediate         ERR 110660ms ECONNRESET  ← 再利用接続:110秒ハング後リセット

今日Wi-Fiルーターを交換したことを思い出す

b2afd4f9-2588-4acf-a5dc-be599d3bf73e


試しにスマホのテザリングへ切り替えて再ビルド

Build successful

一発成功!

原因はBuffaloルーターの「ネット脅威ブロッカー2 プレミアム」

私の環境では、この機能がNext.jsビルド中の通信に影響していたようです。

コードは終始、無実でした。


ルーターは Buffalo WXR9300BE6P

ネット脅威ブロッカー2プレミアムがデフォルトON。これがアイドルなTCP接続を切っていました。

ルーターの管理画面での手順:

  1. 詳細設定 → ネット脅威ブロッカー2

  2. セキュリティー基本設定

  3. [悪質サイトブロック・情報漏洩ブロック]の「使用する」のチェックを外す

  4. 設定を押す

これで自宅Wi-Fiのまま、ビルドが通るようになりました。

スクリーンショット 2026-06-09 152651

同じビルドエラーで悩む人へ:私が学んだこと

  • エラー箇所=原因とは限らない

  • 自分だけ失敗するなら環境差分を疑う

  • テザリングは最強の切り分け方法

  • コードが無実なこともある

数時間コードを追いかけた結果、犯人はWi-Fiルーターでした。

「自分だけビルドが通らない」というときは、コードだけでなくネットワーク環境も疑ってみると意外と早く解決するかもしれません。


よくある質問

この商品について質問がありますか?コミュニティや専門家に質問してください。

このページの内容はいかがだったでしょうか?
担当者に相談する