访问公司代理Node.js后面的Github

时间:2015-06-29 10:31:58

标签: node.js git cordova proxy phonegap-plugins

我遇到了从npm install -g phonegap 调用以下命令来安装PhoneGap的问题:

Failed to connect to github.com port 443: Timed out

返回以下错误:

git

关于此主题存在大量问题,并且它们似乎都提供了相同的答案 - 确保配置了nodejsnode的代理设置。我设置了npm config set proxy http://proxyname:8080 npm config set https-proxy http://proxyname:8080 代理设置,如下所示:

git

对于git config --global http.proxy http://proxyname:8080 git config --global https.proxy http://proxyname:8080

git config --list

npm config listWindows Firewall都确认这些代理设置已就绪。

我还允许程序通过防火墙转到Allow a program or feature through windows firewall - > node.exe。然后,我选择了Node.js gitgit.exe我选择了{{1}}。

但是我仍然遇到了无法连接到Github的问题。还有什么我想念或忘记设置吗? Node.js和Git都是第一次安装此任务。

3 个答案:

答案 0 :(得分:3)

除了上述设置外,如果某些下载的库使用git://协议而不是https://声明其依赖关系,则可能会出现此错误。这些依赖关系通常会因上述错误而失败。

要解决此问题,您可以运行以下命令:

git config --global url."https://".insteadOf git://

这会向Git添加一个配置选项,要求Git在URL使用https协议时使用git://

此设置为我修复了许多代理问题。

答案 1 :(得分:2)

您需要向命令应用程序添加代理身份验证。我假设您在Windows中工作,以下工作对我来说(我不需要将代理添加到npm或git,除非运行git命令)。

在您的活动命令窗口中,每个会话都需要其中一个或两个,包括初始安装添加设备或插件以及第一个应用程序构建:

设置https_proxy = http://username:password@proxy:port

设置http_proxy = http://username:password@proxy:port

所以我看起来像这样:

设置https_proxy = http://john.doe:1234@proxy.det.nsw.edu.au:8080

答案 2 :(得分:0)

使用git 2.8(2016年3月),您无需在网址中以明文形式嵌入密码。

commit 372370fcommit ef97639Knut Franke (``)(2016年1月26日) 帮助:Junio C Hamano (gitster)Eric Sunshine (sunshinebell28)Elia Pinto (devzero2000) Junio C Hamano -- gitster --于2016年2月3日commit 30f302f合并)

  

http:使用凭证API处理代理身份验证

     

目前,将代理凭据传递给curl的唯一方法是将它们包含在代理URL中。通常,这意味着它们将以某种方式(通过包含在~/.gitconfig,shell配置文件或历史记录中)以未加密的方式结束到磁盘上。
  由于代理身份验证通常使用域用户,因此凭据可能对安全性敏感;因此,需要一种更安全的通过证书的方式。

     

如果配置的代理包含用户名但不包含密码,请查询   一个凭证API。另外,请确保我们批准/拒绝代理凭据   正常。   所以:

     

除了curl理解的语法之外,还可以指定一个具有用户名但没有密码的代理字符串,在这种情况下,git将尝试以与它相同的方式获取一个其他凭证。
  有关详细信息,请参阅gitcredentials   因此语法是:

[protocol://][user[:password]@]proxyhost[:port]
  

这可以在每个远程基础上覆盖;见remote.<name>.proxy

  

http:允许选择代理身份验证方法

     

CURLAUTH_ANY不适用于使用307重定向到错误页面而不是407列出支持的身份验证方法来回答未经身份验证的请求的代理。
  因此,允许使用环境变量GIT_HTTP_PROXY_AUTHMETHOD或配置变量http.proxyAuthmethodremote.<name>.proxyAuthmethod(类比)设置身份验证方法   到http.proxyremote.<name>.proxy)。

     

支持以下值:

     
      
  • anyauth(默认)
  •   
  • 基本
  •   
  • 消化
  •   
  • 协商
  •   
  • NTLM
  •