代理人背后的凉亭

时间:2014-02-11 14:48:41

标签: node.js proxy npm bower

代理后面的

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

4 个答案:

答案 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命令的问题,这是因为投标者使用gitgit://网址来获取远程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_PROXYHTTPS_PROXY的代理,但有些工具希望它们是小写的,bower是这些工具之一。这就是为什么我更喜欢在2种情况下使用代理集:低级和高级。

Bower正在使用git从GitHub获取软件包,这就是配置密钥也需要添加到git的原因。 http.proxyhttps.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