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


68

我正在尝试在代理后面运行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


尝试将npm config设置为strict-ssl false
Daniel

Answers:


138

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

问题似乎是npm在代理上使用HTTPS时效果不是很好。将注册表URL从HTTPS更改为HTTP可以为我修复此问题:

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

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

似乎是一个常见问题,但没有充分记录。我希望这里的答案将使人们更容易找到是否遇到此问题。


2
感谢您提供此答案,但是我
遇到了

2
为我使用了这个答案以及@tedyyu代理答案(在我写这篇文章时)。
ixe013 2013年

我想指出的是,如果您在'npm'命令中使用'sudo',那么您在'config set'命令中还需要使用'sudo'。尽管现在似乎很明显,但是这花了我一些时间。
Drellgor

我最近遇到的另一条皱纹。有些软件包会调用cache add spec package-name@tarball-url。大概是,即使您已将注册表设置为npm view,也会使用tarball url 。我还没有找到解决方案。还有谁?httpshttp
Okonomiyaki3000 2016年

此解决方案对我有用,直到遇到某些依赖项,尽管使用HTTP仍然出现相同的错误
David Torres

29
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


7
如您所见,这是我进行的第一个更改-请参阅问题中的前两行。它对我不起作用,可能是由于我们在这里运行的代理类型。我还必须另外更改注册表地址以使用HTTP而不是HTTPS(请参阅我的答案)。
nwinkler 2012年

在企业网络上的Windows 7机顶盒上对我来说非常完美
bkwdesign 2014年

12

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

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

4
这似乎是以明文形式存储密码,这是一个糟糕的主意。我不确定它是否也通过http以明文形式传输?
StackExchange What the Heck

7

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

这是我更正后的文件的内容:

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

1

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

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

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



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
;;;;

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


0

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

在此处输入图片说明


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.