NodeJS child_process.execFile()始终返回Unknown system errno 193

时间:2014-03-18 10:50:41

标签: node.js

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

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);
});

回调中的错误对象是

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

1 个答案:

答案 0 :(得分:6)

问题是child.js不是有效的可执行程序。如果您使用的是Linux或Mac,可以通过在child.js的最顶部写一下来解决这个问题:

#!/usr/bin/env node

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

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

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

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

最后,如果你真的不需要启动第二个节点解释器进程,那么这一切都没有多大意义。你可以尝试在另一个文件中包含一个文件 - 这里有一些想法:How do I include a JavaScript file in another JavaScript file?