Node.js NodeJS child_process.execFile()始终返回未知系统错误号193

Node.js NodeJS child_process.execFile()始终返回未知系统错误号193,node.js,Node.js,简单地说,我不能使用child_process.execFile()。它在回调中总是包含错误 child.js console.log('I\'m child'); var cp = require('child_process'); cp.execFile('./child.js', function (err, stdout,stderr) { console.log('Err: ',err); console.log('STDerr: ',stderr); }); m

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

child.js

console.log('I\'m child');
var cp = require('child_process');

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

console.log('I\'m child');
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' }

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

#!/usr/bin/env node
然后需要说
chmod+xchild.js
使文件可执行。该行称为“shebang行”,它告诉系统使用什么解释器来运行文件的其余部分。您需要在$PATH中有一个节点,它才能工作

如果您不喜欢这样做,或者不使用类似Unix的系统,可以执行以下操作:

cp.execFile('/some/path/to/node', ['./child.js'])
第一个参数必须是节点解释器程序的完整路径(可能是Windows上的node.exe,我不知道这是否重要)


最后,如果您真的不需要启动第二个节点解释器进程,那么这些都没有多大意义。您可以尝试将一个文件包含在另一个文件中——这里有一些想法:

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

#!/usr/bin/env node
然后需要说
chmod+xchild.js
使文件可执行。该行称为“shebang行”,它告诉系统使用什么解释器来运行文件的其余部分。您需要在$PATH中有一个节点,它才能工作

如果您不喜欢这样做,或者不使用类似Unix的系统,可以执行以下操作:

cp.execFile('/some/path/to/node', ['./child.js'])
第一个参数必须是节点解释器程序的完整路径(可能是Windows上的node.exe,我不知道这是否重要)


最后,如果您真的不需要启动第二个节点解释器进程,那么这些都没有多大意义。您可以尝试将一个文件包含在另一个文件中——这里有一些想法:

child.js的前几行是什么?child.js中只有一行。您使用什么操作系统?我试过在Windows中编写代码,我看到了sameYes,我正在使用Windows 7。我应该在Linux上试用吗?child.js的前几行是什么?child.js中只有一行。你使用什么操作系统?我试过在Windows中编写代码,我看到了sameYes,我正在使用Windows 7。我应该在Linux上试用吗?@Green:Fixed,Node希望
args
成为一个数组。不确定自从我在1.5年前写下答案后,这是否发生了变化,但无论如何,请尝试更新的版本。@Green:Fixed,Node希望
args
成为数组。不确定自从我在1.5年前写下答案后,这是否发生了变化,但无论如何,请尝试更新版本。