在控制台的Node中执行subprocess

我想要像git commit一样从Node运行一个命令。 我可以这样做:

 var exec = require("child_process").exec; exec("git commit", function(error, stderr, stdout) { // Do stuff }); 

但是,它总是挂起。 我认为这是因为git commit想要控制台来打开vim / emacs或其他什么,但是Node不允许它。 有没有办法来解决这个问题?

尝试使用spawn而不是exec,所以你可以inheritancestdio。

 'use strict'; var spawn = require('child_process').spawn; var commit = spawn('git', ['commit'], {stdio : 'inherit'});