npm の EAI_AGAIN エラー:原因と解決策

結論 npm error code EAI_AGAIN は、名前を引く処理が一時的に失敗したという意味です。syscall の行には getaddrinfo が入ります。宛先のサーバーへ接続する前の段階で止まっており、レジストリの応答内容は関係ありません。 注意すべき点があります。npm はこのコードに専用の説明を持っていません。実装のコードごとの分岐には ENOTFOUND や EAI_FAIL はありますが、EAI_AGAIN は含まれておらず既定の扱いになります。したがって、ECONNRESET のときに出る「中継設定を確認してください」という案内も表示されません。表示されるのは、失敗した要求の内容を示す1文だけです。 切り分けの材料はエラー文の末尾にあります。getaddrinfo EAI_AGAIN の後ろに、引こうとした名前が入ります。ここがレジストリの名前なのか、中継先の名前なのかで、疑う場所が変わります。 最初に確認すること まず、失敗している名前を特定します。 npm install 2>&1 | grep -o "EAI_AGAIN [^ ]*" 次に、レジストリへ届くかを npm 自身の手段で確かめます。 npm ping このコマンドは現在の向き先へ疎通を試み、往復にかかった時間を表示します。ここで同じコードが返れば、原因は取得処理ではなく経路にあります。成功したり失敗したりする場合は、一時的な不調です。 名前を引く側の設定も確認してください。 cat /etc/resolv.conf npm config get registry npm config get proxy 原因別の確認方法と解決策 原因1:コンテナから名前を引く先へ届いていない コンテナの中でのみ失敗する場合です。実行環境が参照している宛先が、そのコンテナからは到達できません。 確認方法は、コンテナの内側から見ることです。 docker compose exec app sh -c 'cat /etc/resolv.conf' 記載されている宛先が、コンテナの外側でしか使えないものになっていることがあります。その場合、外側では成功して内側でだけ失敗します。 対処は、届く宛先を指定し直すことです。 services: app: dns: - 1.1.1.1 組織のネットワークでは、内部の宛先を指定する必要がある場合があります。管理者の指定に従ってください。 原因2:中継先を経由せず自分で名前を引いている 社内の回線で、中継の設定は入っているのに失敗する場合です。エラー文の末尾に出ている名前が、中継先ではなく接続先になっていれば、中継を経由していません。 確認方法は設定値と失敗名の突き合わせです。 npm config get proxy npm config get https-proxy npm config get noproxy 除外の一覧に接続先が含まれていると、その宛先だけ中継を通しません。結果として自分で名前を引こうとして失敗します。 ...

2026年8月8日 · ErrorLog