在node.js中产生的进程立即退出

我正在尝试在node.js中产生一个avconv进程。 它应该接收stdin数据并将转换后的数据输出到stdout

当命令在shell中工作时,它会立即在node.js中closures,我不知道为什么:

 avconv -v quiet -i pipe:0 -vn -f s16le -acodec pcm_s16le pipe:1 

这只是工作,并在节点:

 var a = spawn('avconv', ['-v quiet -i pipe:0 -vn -f s16le -acodec pcm_s16le pipe:1']); a.on('exit', function(code) { pr(code, true); }) 

我立即得到一个'1'退出代码。 谁能告诉我这里有什么问题?

你需要自己分开参数数组:

 var a = spawn('avconv', ['-v', 'quiet', '-i', 'pipe:0', '-vn', '-f', 's16le', '-acodec', 'pcm_s16le', 'pipe:1']); 

您从命令行工作中习惯的空间分隔由shell(bash,zsh …)提供。 shell将您的命令分解为使用空格的参数,并让您通过添加引号来说“我希望将其作为单个参数”。