1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Squid経由でnpm installができない場合の対応

Posted at

社内ネットワーで開発していると、プロキシ越しの通信に悩まされることがあります。
今回はSquidでプロキシを経由してnpm installを試みたところ、エラーが発生。
いくつか試行錯誤した結果、ようやく解決できたので、その記録です。

発生したエラー

  • 環境
    Ubuntu 22.04:LANのみ 外部接続しない
    Windows11:Squid for windows v4.14

  • 以下のようにプロキシ設定済み

export http_proxy=http://192.168.11.123:3128
export https_proxy=http://192.168.11.123:3128
  • Node.jsとnpmをインストール後、グローバルにnを入れようとしたところでエラー
sudo apt install nodejs npm
sudo npm install n -g
  • エラー内容
    DNS解決に失敗しているようです。
    プロキシ越しの名前解決がうまくいっていないみたいです。
npm ERR! code EAI_AGAIN
npm ERR! syscall getaddrinfo
npm ERR! errno EAI_AGAIN
npm ERR! request to https://registry.npmjs.org/n failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2025-09-09T00_32_16_541Z-debug-0.log

試したこと

curlは通る

  • まず確認としてcurlは通る
    通信自体はできている
curl -I https://registry.npmjs.org/n

npm configにproxyへ追加

  • proxyへ追加
    npm install失敗で変わらず
npm config set proxy http://192.168.11.123:3128
npm config set https-proxy http://192.168.11.123:3128

Squid側でIPv4優先の設定

squid.conf
# IPv4優先
dns_v4_first on

npm installに直接オプションを付ける

  • 最終的にnpmのコマンドラインオプションに直接proxy設定を渡したところ、成功しました!
npm install -g n \
  --strict-ssl=false \
  --registry=https://registry.npmjs.org \
  --proxy=http://192.168.11.123:3128 \
  --https-proxy=http://192.168.11.123:3128
  • バージョン確認もOK
n --version
# ⇒10.2.0

config setではダメで、CLIオプションなら通る

  • なぜこうなるのかまだ理解できていません
    npmの内部挙動やキャッシュ、環境変数との優先順位などが関係しているとは思います。
    とはいえ、CLIオプションで回避できることが分かったので良かったです。

参考

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?