LoginSignup
1
0

More than 5 years have passed since last update.

npmのプロキシ設定にプロトコルを明記しなかったら繋がらなくなった話

Posted at

概要

npm のプロキシ設定は, proxy:port ではなく protocol://proxy:port とする必要があるらしい。
今のところちゃんとしたエビデンスのあるドキュメントにたどり着いていないので、資料があれば教えて頂けると幸いです。

実行環境はこちら。

OS node npm
OS X El Capitan v7.3.0 4.5.0

ある日突然 npm install が終わらなくなった

--verbose オプションをつけたところ、どうやら接続に失敗して何度もリトライしているらしい。

出たエラーがこちら。

npm info retry will retry, error on last attempt: Error: tunneling socket could not be established, cause=connect EHOSTUNREACH

プロキシ設定が怪しそう

何もしてないのに壊れた 何もしてないはずがないので原因を考えてみる。
プロキシ環境下であり、前日に直接接続の環境では普通に動いていたことを考えると、怪しいのはプロキシ関連。疑ったことと実際の状況は以下のとおりである。

疑ったこと 実情
プロキシが設定されてない 設定されていた
プロキシのアドレスが間違っている 合っていた
プロキシのポート番号が間違っている 合っていた
ユーザ認証でエラーが出ている ユーザ認証不要
他のソフトもネットワークエラーを吐く 少なくともcurlもgitは通常通り動作

最後の1つが決定的で、「おそらくプロキシ設定は合っているけど動作しない」という考えに至り始めていた。

もしかしてプロトコル?

散々悩んだりstackoverflowを彷徨ったりした後、「もしかしてプロトコルを明記しないとダメ?」と思い当たる。以前の npm が正常に動作していた時と、設定ファイルをいじった後のアドレス設定は以下のようになっていた。

いじる前のアドレス いじった後のアドレス
http://proxy:port proxy:port/

そこで前のようにプロトコルも指定してみたところ、無事インストールができた。

この後確認のために1度プロトコルを外したプロキシアドレスを設定したところ、同じエラーが確認できた。原因はやはりプロトコルの明記にあるらしい。

まとめ

  • npmはプロキシのアドレスやポート番号が合っていてもプロトコルを明記しないと繋がらない場合がある
  • 明記しなくても繋がる場合があるかどうかは不明(80番や443番を使うプロキシならいけるかも?)
  • --verbose オプションは原因究明に役立つ
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