通过代理访问NPM存储库

时间:2013-07-01 17:47:30

标签: node.js ssl proxy npm

我正在尝试使用代理从Intranet访问npm存储库。

使用代理(在环境变量HTTP_Proxy和HTTPS_Proxy中设置)我可以使用浏览器在没有ssl的情况下访问存储库,并使用wget:

wget registry.npmjs.org/yuidocjs

当我使用https时,我可以使用浏览器访问,但不能使用wget

wget https://registry.npm.js.org/yuidocjs #fails

当我尝试使用NPM时,设置registry=http://registry.npm.js.org/会产生404。

当我使用默认的https注册表路径时,会导致超时。

我在这里缺少什么?我的配置文件如下所示:

proxy = http://ems-lnx222:8080/proxy.pac
https-proxy = http://ems-lnx222:8080/proxy.pac
registry = http://registry.npmjs.org/
prefix = /ws/bemccorm-rtp/npm-packages
strict-ssl = false

更新

经过多次播放后,我发现.pac代理似乎导致了问题。

我使用普通代理,现在获得200状态,获取正确的tgz文件,然后在尝试获取文件时收到npm ERR! fetch failed

2 个答案:

答案 0 :(得分:1)

我确信这是一个错字,但只是为了让调试更加清晰。

  

当我使用https时,我可以使用浏览器访问,但不能使用wget

     

wget https://registry.npm.js.org/yuidocjs #fails

域名错误... npm.JS而不是npmjs ... 进一步了解wget

  

wget https://registry.npmjs.org/yuidocjs   --2013-07-09 15:57:25-- https://registry.npmjs.org/yuidocjs   解析registry.npmjs.org(registry.npmjs.org)... 67.228.31.146   连接到registry.npmjs.org(registry.npmjs.org)| 67.228.31.146 |:443 ...已连接。   错误:无法验证registry.npmjs.org的证书,由“/ C = US / ST = CA / L = Oakland / O = npm / OU = npm Certificate Authority/CN=npmCA/emailAddress=i@izs.me”颁发:     无法在本地验证发行人的权限。   要不安全地连接到registry.npmjs.org,请使用'--no-check-certificate'。

如果您使用--no-check-certificate,它可以正常工作并下载。

但我们知道这不是您的主要问题,您的主要问题是.PAC文件。 我作为系统管理员工作过几次,我们必须在.pac文件中编写不同的规则: 1)如果是内部发送一切到这个路由器 2)如果通过vpn网络连接,请执行此操作 3)等

所以请做一个获取并转录.pac文件,以便我们可以看到规则。 .pac文件只不过是javascript。

此致

答案 1 :(得分:0)

Repocache 为此工作。

npm config set registry https://127.0.0.1:5000/npm/default/
npm install color

使用以下设置启动 repocache

[npm.upstream.default]
url = https://registry.npmjs.org

如果需要代理,添加代理如下:

http = http://127.0.0.1:1087
https = socks5://127.0.0.1:1086