2013-08-24 63 views
1

Git是安装在Windows,并从任何目录的工作(这是在系统路径)执行git的CMD失败,ERR

var child_process = require('child_process'); 
child_process.exec('git --version', function(err, stdout, stderr) { 
    // stdout is correct - git version 1.7.11.msysgit.1 
    // but err is not null 
    // err is [Error: Command failed: ] killed: false, code: 1, signal: null }  
} 

这是什么原因?

+0

我没有在Windows上安装git,但也许'git \ version'是正确的语法? – Plato

+0

git --version在Windows上工作。我认为它不能找到混帐,但我不明白为什么 – WHITECOLOR

+0

有多刺激!也许作为一种解决方法,你可以将'{env:{PATH:'C:\ path到\ node“}}'作为'process.exec()'的选项参数,如[docs](http:// nodejs .ORG/API/child_process.html#child_process_child_process_exec_command_options_callback)。除此之外,我对Windows环境变量没有经验,因此没有进一步的想法:/ – Plato

回答

2

我有使用Windows 7与msysgit此问题。有两件事似乎解决了这个问题。

首先,确认您的Path系统变量包括到Git的bin目录的路径,而不是 CMD目录:

C:\Program Files (x86)\Git\bin 

下一步,验证您有最新msysgit的版本。我已经验证问题与1.8.4-preview版本解决:

https://code.google.com/p/msysgit/downloads/list

重新启动外壳,然后再试一次。

1

作为解决方法,您可以将{env:{PATH:"C:\path to\node"}}作为选项参数传递给process.exec(cmd, opts, callback),如文档中所述。我感到惊讶的是,Windows路径没有结转,但没有解释为什么。

+0

我在OP中添加了PATH没有问题。它不能执行没有错误的git。 – WHITECOLOR