bower install
在超时时失败并且具有以下设置(某些设置无用......):
git config --global http.proxy fr-proxy.example.com:3128
git config --global https.proxy fr-proxy.example.com:3128
export http_proxy=http://fr-proxy.example.com:3128
export https_proxy=http://fr-proxy.example.com:3128
npm config set proxy http://fr-proxy.example.com:3128
npm config set https-proxy http://fr-proxy.example.com:3128
npm config set registry http://registry.npmjs.org/
我还尝试过安装/卸载bower和bower clean cache
。
答案 0 :(得分:98)
编辑.bowerrc文件并添加所需的代理配置:
{
"proxy":"http://<host>:<port>",
"https-proxy":"http://<host>:<port>"
}
如果在经过身份验证的代理后面工作,则应包含用户和密码,如下所示:
{
"proxy":"http://<user>:<password>@<host>:<port>",
"https-proxy":"http://<user>:<password>@<host>:<port>"
}
通常,.bowerrc位于bower.json旁边。如果bower.json文件附近没有.bowerrc文件,您可以自己创建一个。
答案 1 :(得分:30)
我遇到bower list
命令的问题,这是因为投标者使用git
和git://
网址来获取远程GitHub存储库的列表,但是git://
协议被我们的公司防火墙阻止。除了设置环境变量之外,为了解决这个问题,我还需要为git添加额外的配置。这是我必须执行的命令的完整列表(记得用你的命令替换代理主机和端口):
# set proxy for command line tools
export HTTP_PROXY=http://localhost:3128
export HTTPS_PROXY=http://localhost:3128
export http_proxy=http://localhost:3128
export https_proxy=http://localhost:3128
# add configuration to git command line tool
git config --global http.proxy http://localhost:3128
git config --global https.proxy http://localhost:3128
git config --global url."http://".insteadOf git://
Bash中的标准环境变量是大写的,对于HTTP_PROXY
和HTTPS_PROXY
的代理,但有些工具希望它们是小写的,bower是这些工具之一。这就是为什么我更喜欢在2种情况下使用代理集:低级和高级。
Bower正在使用git从GitHub获取软件包,这就是配置密钥也需要添加到git的原因。 http.proxy
和https.proxy
是代理设置,应该指向您的代理。最后但并非最不重要的是,您需要告诉git不要使用git://
协议,因为它可能被防火墙阻止。您需要将其替换为标准http://
协议。有人建议使用https://
代替git://
,如下所示:git config --global url."https://".insteadOf git://
,但我收到Connection reset by peer
错误,所以我正在使用http://
,这是有效的对我好。
在家里我不使用任何代理,也没有公司防火墙,所以我更愿意切换回“普通”无代理设置。我是这样做的:
# remove proxy environment variables
unset HTTP_PROXY
unset HTTPS_PROXY
unset http_proxy
unset https_proxy
# remove git configurations
git config --global --unset http.proxy
git config --global --unset https.proxy
git config --global --unset url."http://".insteadOf
我不擅长记住事情,所以我永远不会记住所有这些命令。除此之外,我很懒,不想手工输入那些长命令。这就是我创建设置和取消设置代理设置的功能的原因。这是我在.bashrc
文件中添加了一些别名定义之后添加的两个函数:
set_proxy() {
export HTTP_PROXY=http://localhost:3128
export HTTPS_PROXY=http://localhost:3128
# some tools uses lowercase env variables
export http_proxy=http://localhost:3128
export https_proxy=http://localhost:3128
# config git
git config --global http.proxy http://localhost:3128
git config --global https.proxy http://localhost:3128
git config --global url."http://".insteadOf git://
}
unset_proxy() {
unset HTTP_PROXY
unset HTTPS_PROXY
unset http_proxy
unset https_proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
git config --global --unset url."http://".insteadOf
}
现在,当我需要设置代理时,我只执行set_proxy
命令,并取消设置unset_proxy
命令。在Bash自动完成的帮助下,我甚至不需要输入这些命令,但让tab为我完成它们。
答案 2 :(得分:6)
我的脚本(在Windows上使用git bash)设置代理由不同的用户执行,而不是我用于bower的用户。没有考虑环境变量。
因此,以下设置就足够了,如其他答案中所述:
export http_proxy=http://fr-proxy.example.com:3128
export https_proxy=http://fr-proxy.example.com:3128
答案 3 :(得分:0)
如果您的操作系统是Linux或OS X,请尝试以下命令
bash
http_proxy='proxy server' https_proxy='proxy server' bower