NodeJS child_process.execFile()总是返回Unknown system errno 193

简单地说,我不能使用child_process.execFile()。 它总是包含callback错误。

child.js

console.log('I\'m child'); 

main.js

 var cp = require('child_process'); cp.execFile('./child.js', function (err, stdout,stderr) { console.log('Err: ',err); console.log('STDerr: ',stderr); }); 

callback中的错误对象是

 { [Error: spawn Unknown system errno 193] code: 'Unknown system errno 193', errno: 'Unknown system errno 193', syscall: 'spawn' } 

问题是,child.js不是一个有效的可执行程序。 如果你在Linux或Mac上,你可以通过在child.js最上面写这个来解决这个问题:

 #!/usr/bin/env node 

然后您将需要说chmod +x child.js使文件可执行。 该行被称为“shebang行”,它告诉系统使用什么解释器来运行文件的其余部分。 你需要在$ PATH中有节点才能工作。

如果你不喜欢,或者不使用类Unix系统,你可以这样做:

 cp.execFile('/some/path/to/node', ['./child.js']) 

第一个参数必须是你的节点解释器程序的完整path(也许在Windows上的node.exe,我不知道这是否重要)。

最后,如果你真的不需要启动第二个节点解释器进程,这些都不会有什么意义。 您可以尝试在另一个文件中包含一个文件 – 这里有一些想法: 如何在另一个JavaScript文件中包含JavaScript文件?