Answers:
我这样解决了这个问题:
我运行以下命令:
npm config set strict-ssl false
然后将npm设置为使用http而不是https运行:
npm config set registry "http://registry.npmjs.org/"
然后,我使用以下语法安装软件包:
npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
username:password
如果代理不需要您进行身份验证,请跳过该部分
编辑:我的一个朋友刚刚指出的是,你可以通过设置让NPM背后的代理工作BOTH HTTP_PROXY和HTTPS_PROXY环境变量,然后正常发出命令 故宫安装快车(例如)
EDIT2:正如@BStruthers所评论的那样,请记住,如果包含@,则不能正确地解析包含“ @”的密码,如果使用@将整个密码放在引号中
my@password
,则.npmrc文件应包含my%40password
密码部分。在某些情况下,将其放在引号中是可行的,但是对其进行编码是万无一失的。
设定npm
代理
对于HTTP
:
npm config set proxy http://proxy_host:port
对于HTTPS
:
如果有一个,请使用https代理地址
npm config set https-proxy https://proxy.company.com:8080
否则重用http代理地址
npm config set https-proxy http://proxy.company.com:8080
注意:https-proxy没有https
作为协议,而是http
。
如有疑问,请像我一样尝试所有这些命令:
npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set strict-ssl false
set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080
npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \
--without-ssl --insecure -g install
=======
将设置放进去~/.bashrc
,~/.bash_profile
这样您就不必在每次打开新的终端窗口时都担心设置!
如果您的公司像我的公司,我必须经常更改密码。因此,我在〜/ .bashrc或〜/ .bash_profile中添加了以下内容,以便每当打开终端时,我都知道我的npm是最新的!
只需将以下代码粘贴到~/.bashrc
文件底部:
######################
# User Variables (Edit These!)
######################
username="myusername"
password="mypassword"
proxy="mycompany:8080"
######################
# Environement Variables
# (npm does use these variables, and they are vital to lots of applications)
######################
export HTTPS_PROXY="http://$username:$password@$proxy"
export HTTP_PROXY="http://$username:$password@$proxy"
export http_proxy="http://$username:$password@$proxy"
export https_proxy="http://$username:$password@$proxy"
export all_proxy="http://$username:$password@$proxy"
export ftp_proxy="http://$username:$password@$proxy"
export dns_proxy="http://$username:$password@$proxy"
export rsync_proxy="http://$username:$password@$proxy"
export no_proxy="127.0.0.10/8, localhost, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16"
######################
# npm Settings
######################
npm config set registry http://registry.npmjs.org/
npm config set proxy "http://$username:$password@$proxy"
npm config set https-proxy "http://$username:$password@$proxy"
npm config set strict-ssl false
echo "registry=http://registry.npmjs.org/" > ~/.npmrc
echo "proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "strict-ssl=false" >> ~/.npmrc
echo "http-proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "http_proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "https_proxy=http://$username:$password@$proxy" >> ~/.npmrc
echo "https-proxy=http://$username:$password@$proxy" >> ~/.npmrc
######################
# WGET SETTINGS
# (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
######################
echo "https_proxy = http://$username:$password@$proxy/" > ~/.wgetrc
echo "http_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc
echo "ftp_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc
echo "use_proxy = on" >> ~/.wgetrc
######################
# CURL SETTINGS
# (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
######################
echo "proxy=http://$username:$password@$proxy" > ~/.curlrc
然后在您粘贴的代码中编辑“用户名”,“密码”和“代理”字段。
打开一个新的终端
通过运行npm config list
和检查设置cat ~/.npmrc
尝试使用安装模块
npm install __
, 要么 npm --without-ssl --insecure install __
, 要么 npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __
。-g
npm config set registry http://registry.npmjs.org/
, , npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
为NPM配置和使用再装NPM包。谢谢npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set strict-ssl false
npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 --without-ssl --insecure -g install {packagename}
您是否尝试过命令行选项而不是.npmrc
文件?
我认为有些事情npm --proxy http://proxy-server:8080/ install {package-name}
对我有用。
我还看到了以下内容:
npm config set proxy http://proxy-server:8080/
尽管已经有很多好的建议,但是对于我的环境(Windows 7,使用PowerShell)和最新可用的node.js版本(v8.1.2),上述所有方法均无效,除非我遵循brunowego设置。
因此,请使用以下命令检查您的设置:
npm config list
代理背后的设置:
npm config set registry http://registry.npmjs.org/
npm config set http-proxy http://username:password@ip:port
npm config set https-proxy http://username:password@ip:port
npm config set proxy http://username:password@ip:port
npm set strict-ssl false
希望这可以节省时间给某人
这在Windows中对我有效:
npm config set proxy http://domain%5Cuser:pass@host:port
如果您不在任何域中,请使用:
npm config set proxy http://user:pass@host:port
如果您的密码包含特殊字符,例如"
,@
,:
等等,通过他们的URL编码值替换它们。例如"
-> %22
,@
-> %40
,:
-> %3A
。%5C
用于角色\
。
encodeURIComponent("YourP@ssword")
以获取密码的编码版本。
要设置http代理,请设置-g标志:
sudo npm config set proxy http://proxy_host:port -g
对于https代理,再次确保设置了-g标志:
sudo npm config set https-proxy http://proxy_host:port -g
$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port
这对我有用-
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
npm set strict-ssl=false
vim ~/.npmrc
在您的Linux机器中并添加以下内容。不要忘记添加registry
零件,因为在许多情况下这会导致故障。
proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/
https-proxy=https://..
为https-proxy=http://..
最终,我设法解决了使用AD身份验证作为代理的问题。我必须执行:
npm config set proxy http://domain%5Cuser:password@proxy:port/
npm config set https-proxy http://domain%5Cuser:password@proxy:port/
URL编码任何特殊字符(例如反斜杠或#)非常重要,在我的情况下,我必须编码
backshlash
用%5c,使domain\user will
被domain%5Cuser
#
与签名%23%0A
等等之类密码Password#2
会Password%23%0A2
我还添加了以下设置:
npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/
虽然我用config设置了代理,但问题并没有解决,但是在我为我工作之后:
npm --https-proxy http://XX.AA.AA.BB:8080安装cordova-plugins
npm --proxy http://XX.AA.AA.BB:8080安装
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/
这解决了我的问题。
这对我有用。设置http和https代理。
尝试在C:\ Users \ .npmrc中找到.npmrc
然后打开(记事本),编写并保存在内部:
proxy=http://<username>:<pass>@<proxyhost>:<port>
PS:请删除“ <”和“>”!
对我来说,即使python等都可以使用,但我们的公司代理npm却无法使用。
我试过了
npm config set proxy http://proxyccc.xxx.ca:8080
npm config set https-proxy https://proxyccc.xxx.ca:8080
npm config set registry http://registry.npmjs.org/
按照指示进行操作,但始终出现相同的错误。
只有
从.npmrc文件中删除
时https-proxy https://proxyccc.xxx.ca:8080
,npm install electronic --save-dev才起作用
https-proxy
可能不是https:
。至少,为每个端口使用相同的端口可能不正确,但是我认为它们可能具有相同的值。
在Windows系统上
尝试删除代理和注册表设置(如果已设置),然后通过以下方式在命令行上设置环境变量
SET HTTP_PROXY=http://username:password@domain:port
SET HTTPS_PROXY=http://username:password@domain:port
然后尝试运行npm install。这样,您将不会在.npmrc中设置代理,但在该会话中它将起作用。
SET HTTP_PROXY http://username:password@domain:port
但切换到SET HTTP_PROXY=http://username:password@domain:port
似乎一切工作正常
在cmd或GIT Bash或其他提示下使用以下命令
$ npm config设置代理“ http://192.168.1.101:4128 ”
$ npm config设置https-proxy“ http://192.168.1.101:4128 ”
其中192.168.1.101是代理IP,而4128是端口。根据您的代理设置进行更改。它对我有用。
许多应用程序(例如npm)可以使用用户环境变量中的代理设置。
您只需将变量HTTP_PROXY和HTTPS_PROXY添加到您的环境中,每个变量的值都相同
http:// user:password @ proxyAddress:proxyPort
例如,如果您使用Windows,则可以按以下方式添加代理:
上面对于这个问题有很多答案,但是没有一个对我有用。他们都提到要添加http://
前缀。所以我也添加了它。全部失败。
我不小心删除了http://
前缀后,它终于可以工作了。最终的配置是这样的:
npm config set registry http://registry.npmjs.org/
npm config set http-proxy ip:port
npm config set https-proxy ip:port
npm config set proxy ip:port
npm set strict-ssl false
我不知道其背后的逻辑,但确实有效。如果以上答案均不适合您,也许您可以尝试这种方式。希望这一点有用。
在curl的SSL和证书问题页面上有很好的信息。我的大部分回答都基于那里的信息。
使用strict-ssl false是不好的做法,并且可能导致问题。我们可以做的是通过“中间人”证书添加要注入的证书。
如何在Windows上解决此问题:
openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text
npm config set cafile **C:\Users\username\cacert.pem
npm config set strict-ssl true
!我们做到了!现在npm可以理解如何连接了。好处是您可以告诉curl使用相同的cabundle.pem,它也可以理解HTTP。
这是我遵循的步骤(Windows):
C:\Users\<WIN_USERNAME>\.npmrc
从以下地址将证书导出到您的文件系统:https : //registry.npmjs.org
导航到导出的证书位置,然后发出以下命令:
npm config set cafile npm_certificate.cer
将以下更改添加到文件:
registry=https://registry.npmjs.org/
strict-ssl=false
https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/
cafile=npm_certificate.cer
现在您应该准备出发了!
我的问题归结为我一个愚蠢的错误。由于有一天我很快将代理放入Windows * .bat文件(http_proxy,https_proxy和ftp_proxy)中,因此我忘记了对URL编码的域\用户(%5C)和带有问号的密码的特殊字符进行转义'?' (%3F)。也就是说,一旦有了编码后的命令,别忘了在bat file命令中转义'%'。
我变了
set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080
至
set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080
也许这是一个边缘案例,但希望它能对某人有所帮助。
当我在代理设置中不使用http / http前缀给出时,即使代理主机和端口的值正确,npm也会失败。它仅在添加协议前缀后才有效。