代理配置后无法npm安装Angular-cli

时间:2017-10-31 06:43:28

标签: node.js angular proxy npm-install

我正在尝试使用npm install在Windows 10中下载Angular。当我在公司代理服务器上时,我将代理配置为用户名:password @ server:port

但是,我在运行

时遇到了这个问题

npm ERR! code E407 npm ERR! 407 Proxy Authorization Required: @angular/cli@latest

调试日志如下:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   '--proxy',
1 verbose cli   'http://XXXXX',     //Removed my proxy details
1 verbose cli   '--without-ssl',
1 verbose cli   '--insecure',
1 verbose cli   '-g',
1 verbose cli   'install',
1 verbose cli   '@angular/cli' ]
2 info using npm@5.4.2
3 info using node@v8.8.1
4 verbose npm-session 40ab1dc3dabb6029
5 silly install loadCurrentTree
6 silly install readGlobalPackageData
7 http fetch GET 407 http://registry.npmjs.org/@angular%2fcli 109ms
8 silly fetchPackageMetaData error for @angular/cli@latest 407 Proxy Authorization Required: @angular/cli@latest
9 verbose stack Error: 407 Proxy Authorization Required: @angular/cli@latest
9 verbose stack     at fetch.then.res (C:\Program Files\nodejs\node_modules\npm\node_modules\pacote\lib\fetchers\registry\fetch.js:42:19)
9 verbose stack     at tryCatcher (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\util.js:16:23)
9 verbose stack     at Promise._settlePromiseFromHandler (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:512:31)
9 verbose stack     at Promise._settlePromise (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:569:18)
9 verbose stack     at Promise._settlePromise0 (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:614:10)
9 verbose stack     at Promise._settlePromises (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:693:18)
9 verbose stack     at Async._drainQueue (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\async.js:133:16)
9 verbose stack     at Async._drainQueues (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\async.js:143:10)
9 verbose stack     at Immediate.Async.drainQueues (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\async.js:17:14)
9 verbose stack     at runCallback (timers.js:785:20)
9 verbose stack     at tryOnImmediate (timers.js:747:5)
9 verbose stack     at processImmediate [as _immediateCallback] (timers.js:718:5)
10 verbose cwd C:\Users\XXXXX
11 verbose Windows_NT 10.0.14393
12 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "--proxy" "http://XXXXX" "--without-ssl" "--insecure" "-g" "install" "@angular/cli"
13 verbose node v8.8.1
14 verbose npm  v5.4.2
15 error code E407
16 error 407 Proxy Authorization Required: @angular/cli@latest
17 verbose exit [ 1, true ]

知道可能导致问题的原因是什么?谢谢!

7 个答案:

答案 0 :(得分:8)

此配置对我有用:

method1(命令行):

npm config set proxy http://user:password@domain_proxy:port/
npm config set https-proxy http://user:password@domain_proxy:port

be careful the url should be encoded. for example this password 01xx!tr should be introduced as 01xx%21tr. use this site to encode your url https://www.url-encode-decode.com/

example:
user/password => user1/01xx!tr
domain:port of the proxy => mydomain.org:8000
=> in that case :

npm config set proxy http://user1:01xx%21tr@mydomain.org:8000/
npm config set https-proxy http://user1:01xx%21tr@mydomain.org:8000

method2(编辑节点conifugration文件):

the method 2 is easier because we will not be botherd with encoding the urls

1- edit node configuration file (in windows it's located in %USERPROFILE%\.npmrc, example C:\Users\Jack\.npmrc)

2- add these lines
proxy=http://user:password@domain_proxy:port/
https-proxy=https-proxy http://user:passwor`enter code here`d@domain_proxy:port

example :
if the :
user/password => user1/01xx!tr
domain:port of the proxy => mydomain.org:8000

=> the configuration file should be look like this:

proxy=http://user1:01xx!tr@mydomain.org:8000/
https-proxy=http://user1:01xx!tr@mydomain.org:8000

答案 1 :(得分:0)

尝试将npm注册表的URL设置为http而不是https。您可以查看此answer

答案 2 :(得分:0)

如果您已配置代理和静止,则无法使用npm命令进行安装。您可以尝试以下命令。似乎你需要清除一些东西 - 这将解决问题。

npm cache verify

答案 3 :(得分:0)

这个步骤对我有用

修改.npmrc个文件 添加以下行

proxy=http://username:password@proxyaddress:portno
https-proxy=http://username:password@proxyaddress:portno

答案 4 :(得分:0)

对我有用的东西如下 问题:在“ C:\ Users *用户名* .npmrc”中定义的注册表错误。需要更新npm配置注册表。

步骤1 解决方案:从“ C:\ Users *用户名* .npmrc”文件中删除了注册表项。

第2步 步骤1之后,我遇到了以下错误

  

npm install -g @ angular / cli   npm WARN注册表https://registry.npmjs.org/出现意外警告:其他警告SELF_SIGNED_CERT_IN_CHAIN:对https://registry.npmjs.org/@angular%2fcli的请求失败,原因:证书链中的自签名证书   npm WARN注册表由于重新验证期间发生请求错误,因此使用了https://registry.npmjs.org/中的过期软件包数据。

问题:npm维护者在2月27日宣布,npm的自签名证书不再存在: 今天一整天,一堆用户在安装和发布软件包时收到“ SELFSIGNEDCERTINCHAIN”错误。 npm不再支持其自签名证书。 但是,推荐的修复程序对我而言失败。

解决方案:打开命令提示符,然后在命令下面运行。 地方性 设置npm_config_strict-ssl = false npm安装npm -g --ca = null npm --version ENDLOCAL

第3步 现在> npm install -g @ angular / cli运行正常。

答案 5 :(得分:0)

要在办公室中配置代理,

npm config set proxy http://user:password@proxy.companyname.com:port/
npm config set https-proxy http://user:password@proxy.companyname.com:port/

答案 6 :(得分:0)

解决了。 我花了一些时间解决代理问题后,发现我的错误是设置了3个代理变量: proxy http-proxy https-proxy

(注意:我在stackoverflow上读到应该设置 http-proxy 的地方,但这是错误的)

删除 http-proxy 为我解决了此问题。

设置npm代理和npm https_proxy正确,如下所示:

npm config set proxy http://user:password@proxy.companyname.com:port/
npm config set https-proxy http://user:password@proxy.companyname.com:port/