1. ホーム
  2. http

プロキシの後ろでの npm が 403 で失敗する

2023-11-28 17:47:04

質問

私は npm をプロキシの後ろで実行しようとしています。プロキシに直接入力する方法と Authoxy :

npm config set proxy http://localhost:8999
npm config set https-proxy http://localhost:8999

どのプロキシを使うかに関わらず、常に同じエラーが発生します。 npm search :

npm info it worked if it ends with ok
npm verb cli [ 'node', '/usr/local/bin/npm', 'search' ]
npm info using [email protected]
npm info using [email protected]
npm verb config file /Users/xxx/.npmrc
npm verb config file /usr/local/etc/npmrc
npm verb config file /usr/local/lib/node_modules/npm/npmrc
npm WARN Building the local index for the first time, please be patient
npm verb url raw /-/all
npm verb url resolving [ 'https://registry.npmjs.org/', './-/all' ]
npm verb url resolved https://registry.npmjs.org/-/all
npm info retry registry request attempt 1 at 09:48:47
npm http GET https://registry.npmjs.org/-/all
npm info retry will retry, error on last attempt: Error: tunneling socket could not be established, sutatusCode=403
npm info retry registry request attempt 2 at 09:48:57
npm http GET https://registry.npmjs.org/-/all
npm info retry will retry, error on last attempt: Error: tunneling socket could not be established, sutatusCode=403
npm info retry registry request attempt 3 at 09:49:57
npm http GET https://registry.npmjs.org/-/all
npm ERR! Error: tunneling socket could not be established, sutatusCode=403
npm ERR!     at ClientRequest.onConnect (/usr/local/lib/node_modules/npm/node_modules/request/tunnel.js:148:19)
npm ERR!     at ClientRequest.g (events.js:185:14)
npm ERR!     at ClientRequest.EventEmitter.emit (events.js:115:20)
npm ERR!     at Socket.socketOnData (http.js:1383:11)
npm ERR!     at TCP.onread (net.js:410:27)

このコマンドは常に sutatusCode [sic!] 403 - と表示され、未承認を意味します。私は Authoxy がユーザ名/パスワードを要求しないように設定しました。Authoxy をバイパスして http:// user:pass@proxy:port の形式で NTLM プロキシ用の本当のプロキシ認証情報を提供すると、同じエラーが発生します。

どうすればこれをプロキシ経由で動作させることができるでしょうか。

更新

NPMプロジェクトに課題を作成して、この件を報告しました。 https://github.com/isaacs/npm/issues/2866

どのように解決するのですか?

OK、質問を投稿してから数分以内に、私はここで自分自身の答えを見つけました。 https://github.com/npm/npm/issues/2119#issuecomment-5321857

問題は、npm がプロキシ経由の HTTPS でそれほど優れていないことだと思われます。レジストリの URL を HTTPS から HTTP に変更すると、私の場合は解決しました。

npm config set registry http://registry.npmjs.org/

まだプロキシ設定を提供しなければなりませんが(私の場合はAuthoxyを通して)、今はすべてうまく動作しています。

よくある問題のようですが、あまり文書化されていません。ここでのこの回答が、この問題に遭遇した場合に、人々が簡単に見つけられるようになることを願っています。