テクノロジー · 実用ガイド

npm の「getaddrinfo EAI_AGAIN」—DNS を変える前に resolver context を証明する

失敗した shell、CI、WSL、container と正確な registry hostname を固定し、その場で名前解決を検証してから proxy、TLS、registry を分離します。

Original diagram mapping npm EAI_AGAIN across caller, operating-system resolver, npm proxy or registry configuration, and registry reachability.
オリジナルイラスト:Original illustration: prove the exact execution context and each boundary before changing DNS. Watch at Ease

「getaddrinfo EAI_AGAIN」は名前解決が一時的に失敗したことを示します。npm の停止や、browser と失敗 process が同じ resolver を使うことまでは証明しません。

元の shell、CI runner、WSL、container 内で registry と proxy を記録し、同じ context で解決を確認します。hostname が解決してから connect、TLS、HTTP へ進みます。

正確な caller と hostname を固定

完全な npm error、command、時刻、shell、IDE、service、CI、WSL、container の別を保存します。別 context の browser 結果を代用しません。

credential を出さずに実効 registry と proxy を記録し、引数、環境変数、project/user/global npmrc の由来も確認します。

失敗 context 内で名前解決を検証

同じ user、namespace、network で正確な hostname を繰り返し解決します。container や CI は内部で試験し、host 成功と混同しません。

resolver 設定、search domain、VPN、split DNS、nameserver 到達性を記録し、最初から企業 DNS を公開 DNS に置換しません。

DNS と proxy・registry transport を分離

実効 registry に npm ping を実行します。EAI_AGAIN なら resolver 分岐を維持し、解決後の timeout、certificate、HTTP status は別の層として扱います。

proxy と https-proxy の由来を先に記録します。proxy hostname 自体も解決が必要で、誤りを証明した設定だけを直します。

container、WSL、CI を別分岐に

Docker では container network と DNS を host と比較し、失敗した build または runtime stage 内で検証します。再起動だけでは原因を証明しません。

WSL と CI では生成された resolver file、VPN timing、job image を記録し、単一 runner の問題を全体設定へ広げません。

bypass なしで完了を確認

同じ caller で解決、npm ping、元の npm install/ci を再実行し、hosts 固定や公開 DNS override を残さず成功を確認します。

断続的なら build window をまたいで複数回成功させ、前後の時刻と変更された境界を台帳に残します。

Original decision tree separating name-resolution failure from npm registry, proxy, connection, TLS and HTTP failures.
オリジナルイラスト:Original illustration: branch on evidence and avoid hard-coded registry IPs or TLS bypasses. Watch at Ease