简单地说,我不能使用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' }
答案 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?