简单地说,我不能使用child_process.execFile().它总是在回调中包含错误.
child.js
console.log('I\'m child');
Run Code Online (Sandbox Code Playgroud)
main.js
var cp = require('child_process');
cp.execFile('./child.js', function (err, stdout,stderr) {
console.log('Err: ',err);
console.log('STDerr: ',stderr);
});
Run Code Online (Sandbox Code Playgroud)
回调中的错误对象是
{ [Error: spawn Unknown system errno 193]
code: 'Unknown system errno 193',
errno: 'Unknown system errno 193',
syscall: 'spawn' }
Run Code Online (Sandbox Code Playgroud)
问题是child.js不是有效的可执行程序.如果您使用的是Linux或Mac,可以通过在child.js的最顶部写下来解决这个问题:
#!/usr/bin/env node
Run Code Online (Sandbox Code Playgroud)
然后,您需要说明chmod +x child.js使文件可执行.该行被称为"shebang line",它告诉系统使用什么解释器来运行文件的其余部分.你需要在$ PATH中有节点才能工作.
如果你不喜欢它,或者没有使用类Unix系统,你可以这样做:
cp.execFile('/some/path/to/node', ['./child.js'])
Run Code Online (Sandbox Code Playgroud)
第一个参数必须是节点解释器程序的完整路径(可能是Windows上的node.exe,我不知道这是否重要).
最后,如果你真的不需要启动第二个节点解释器进程,那么这一切都没有多大意义.您可以尝试在另一个文件中包含一个文件 - 这里有一些想法:如何在另一个JavaScript文件中包含JavaScript文件?
| 归档时间: |
|
| 查看次数: |
3747 次 |
| 最近记录: |