代理配置后无法 npm install Angular-cli

新手上路,请多包涵

我正在尝试使用 npm install 在 Windows 10 中下载 Angular。当我在公司代理上时,我将代理配置为 username: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 ]

知道什么可能导致问题吗?谢谢!

原文由 icedmilocode 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 731
2 个回答

此配置对我有用:

方法1(命令行):

 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

方法2(编辑节点配置文件):

 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

原文由 Ala Messaoudi 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

(注意:我在 stackoverflow 的某处读到我应该设置 http-proxy 但这是错误的)

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

设置npm proxy和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/

原文由 Spyder 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题