我正在尝试在代理后面运行 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。
如何通过代理完成此工作?
更新
我在NPM项目中创建了一个问题来报告此问题:https://github.com/isaacs/npm/issues/2866
答案 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环境中不同时。在这种情况下:
403 Forbidden
几乎没有提示您使用了错误的代理。检查您的gradle.properties
等,并根据需要进行修复/覆盖。TLDR:不是在项目中而是在您正在使用的计算机上定义代理。
答案 6 :(得分:1)
答案 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)
答案 9 :(得分:0)
我遇到了同样的问题,最后通过断开所有VPN的连接解决了该问题。