代理后面的npm失败,状态为403

时间:2012-08-02 08:15:53

标签: http node.js proxy npm

我正在尝试在代理后面运行 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 npm@1.1.45
npm info using node@v0.8.4
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

10 个答案:

答案 0 :(得分:108)

好的,所以在发布问题后的几分钟内,我在这里找到答案: https://github.com/isaacs/npm/issues/2119#issuecomment-5321857

问题似乎是npm在代理上使用HTTPS并不是那么好。将注册表URL从HTTPS更改为HTTP为我修复了它:

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

我仍然需要提供代理配置(在我的情况下通过Authoxy),但现在一切正常。

似乎是一个常见问题,但没有详细记录。我希望这里的答案能让人们更容易找到他们是否遇到这个问题。

答案 1 :(得分:28)

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

信用额转到http://jjasonclark.com/how-to-setup-node-behind-web-proxy

答案 2 :(得分:12)

如果您需要提供用户名和密码以在您的代理进行身份验证,则可以使用以下语法:

npm config set proxy http://usr:pwd@host:port
npm config set https-proxy http://usr:pwd@host:port

答案 3 :(得分:5)

如果其他人最终破坏了他们的代理配置设置,请转到 .npmrc ,输入设置。 此文件位于节点根文件夹级别。

以下是我更正后的文件:

#proxy = http://proxy.company.com:8080
https-proxy = https://proxy.company.com:8080 
registry = http://registry.npmjs.org/

答案 4 :(得分:2)

就我而言,我阅读了 npm 使用的注册表:

 npm config get registry

我得到了

http://registry.npmjs.org/

然后我刚刚将 http 更改为 https 如下:

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

答案 5 :(得分:1)

对于使用Jenkins或其他CI服务器的用户:重要的是 where 定义代理,尤其是当它们在本地开发环境和CI环境中不同时。在这种情况下:

  • 不要在项目的.npmrc文件中定义代理。否则,请确保覆盖CI服务器上的设置。
  • 任何其他代理设置都可能导致403 Forbidden几乎没有提示您使用了错误的代理。检查您的gradle.properties等,并根据需要进行修复/覆盖。

TLDR:不是在项目中而是在您正在使用的计算机上定义代理。

答案 6 :(得分:1)

由于违反安全性,组织可能拥有自己的存储库。

按如下所示设置本地存储库。

npm配置集注册表https://yourorg-artifactory.com/

我希望这能解决问题。

答案 7 :(得分:0)

在Windows 10上,做

npm config edit

这将在文本编辑器中打开配置文件。按用户删除所有设置的代理变量,只保留默认值。

;;;;
; npm userconfig file
; this is a simple ini-formatted file
; lines that start with semi-colons are comments.
; read `npm help config` for help on the various options
;;;;

--->Delete everything proxy settings from here.

;;;;
; all options with default values
;;;;

关闭并保存。再试一次。那就是在我的本地主机上对我有用的东西。

答案 8 :(得分:0)

在Windows10上,创建此文件。为我工作。

enter image description here

答案 9 :(得分:0)

我遇到了同样的问题,最后通过断开所有VPN的连接解决了该问题。