74

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

4

10 回答 10

148

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

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

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

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

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

于 2012-08-02T08:22:49.530 回答
31
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

于 2012-10-11T05:14:02.403 回答
12

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

npm config set proxy http://usr:pwd@host:port
npm config set https-proxy http://usr:pwd@host:port
于 2013-10-16T07:48:44.723 回答
8

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

这是我更正后的文件的样子:

#proxy = http://proxy.company.com:8080
https-proxy = https://proxy.company.com:8080 
registry = http://registry.npmjs.org/
于 2014-05-15T15:53:42.373 回答
3

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

 npm config get registry

我得到了

http://registry.npmjs.org/

然后我就变成httphttps这样:

npm config set registry https://registry.npmjs.org/
于 2021-01-21T13:44:59.550 回答
2

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

如下设置您的本地仓库。

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

我希望这能解决问题。

于 2020-03-18T10:07:53.717 回答
1

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

  • 不要在项目的 .npmrc 文件中定义代理。或者,如果您这样做,请务必覆盖 CI 服务器上的设置。
  • 任何其他代理设置都可能会导致403 Forbidden您使用错误代理这一事实几乎没有提示。检查您的gradle.properties或此类并根据需要修复/覆盖。

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

于 2018-06-29T07:27:58.747 回答
1

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

于 2020-10-07T17:29:08.150 回答
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
;;;;

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

于 2020-02-17T13:11:14.460 回答
0

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

在此处输入图像描述

于 2020-09-18T15:37:45.860 回答