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

我试图在代理之后运行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 – 这意味着未经授权。 我已经build立Authoxy不需要用户名/密码。 当绕过Authoxy并以http:// user:pass @ proxy:port的forms为我们的NTLM代理提供真实的代理证书时,会发生同样的错误。

我如何通过代理来完成这项工作?

更新

我在NPM项目上创build了一个报告这个问题: https : //github.com/isaacs/npm/issues/2866

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

这个问题似乎是,通过代理HTTPS npm是不是很好。 将registryURL从HTTPS更改为HTTP为我解决了这个问题:

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

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

似乎是一个共同的问题,但没有很好的文件。 我希望这个答案能让人们更容易地发现是否遇到这个问题。

 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

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

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

如果其他人最终打破他们的代理configuration设置转到您的.npmrc ,input设置。 该文件位于您的节点根文件夹级别。

以下是我纠正的文件是什么样的:

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