我正在尝试使用npm安装在Windows 10中下载Angular。由于我使用公司代理,我将代理配置为username:password@server:端口
然而,我在运行时遇到了这个问题
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 Filesnodejsnode_modulesnpmnode_modulespacotelibfetchersregistryfetch.js:42:19)
9 verbose stack at tryCatcher (C:Program Filesnodejsnode_modulesnpmnode_modulesbluebirdjsreleaseutil.js:16:23)
9 verbose stack at Promise._settlePromiseFromHandler (C:Program Filesnodejsnode_modulesnpmnode_modulesbluebirdjsreleasepromise.js:512:31)
9 verbose stack at Promise._settlePromise (C:Program Filesnodejsnode_modulesnpmnode_modulesbluebirdjsreleasepromise.js:569:18)
9 verbose stack at Promise._settlePromise0 (C:Program Filesnodejsnode_modulesnpmnode_modulesbluebirdjsreleasepromise.js:614:10)
9 verbose stack at Promise._settlePromises (C:Program Filesnodejsnode_modulesnpmnode_modulesbluebirdjsreleasepromise.js:693:18)
9 verbose stack at Async._drainQueue (C:Program Filesnodejsnode_modulesnpmnode_modulesbluebirdjsreleaseasync.js:133:16)
9 verbose stack at Async._drainQueues (C:Program Filesnodejsnode_modulesnpmnode_modulesbluebirdjsreleaseasync.js:143:10)
9 verbose stack at Immediate.Async.drainQueues (C:Program Filesnodejsnode_modulesnpmnode_modulesbluebirdjsreleaseasync.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:UsersXXXXX
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 ]
你知道是什么导致了这个问题吗?谢谢
此配置对我有效:
方法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:UsersJack.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
解决了它。在我花了一点时间研究代理问题后,发现我的错误是设置了3个代理变量:proxy、http proxyttps proxy。
(注意:我在stackoverflow上读到我应该设置http proxy,但这是错误的)
删除http代理为我解决了这个问题。
设置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/
尝试将npm注册表的URL设置为http而不是https。你可以看看这个答案。
如果您已经配置了Proxy和Still,则无法使用npm命令进行安装。您可以尝试以下命令。你似乎需要清理一些东西——这将解决问题。
npm cache verify
这些步骤对我有效
编辑.npmrc
文件在行下方添加
proxy=http://username:password@proxyaddress:portno
https-proxy=http://username:password@proxyaddress:portno
对我有用的东西如下,问题:在"C:\Users*用户名*.npmrc"中定义的注册表是错误的。需要更新npm配置注册表。
步骤1解决方案:从"C:\Users*用户名*.npmrc"文件中删除了注册表项。
步骤2在步骤1之后,我得到了以下错误
npm install-g@angular/clinpm 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不再支持其自签名证书。然而,推荐的修复程序对我来说失败了。
解决方案:打开命令提示符,然后运行以下命令。SETLOCALSET npm_config_strict-sl=falsenpm安装npm-g--ca=nullnpm—版本端局部
步骤3现在>npm install-g@angular/cli运行一切正常。
要在办公室中配置代理,
npm config set proxy http://user:password@proxy.companyname.com:port/
npm config set https-proxy http://user:password@proxy.companyname.com:port/