将代码从 child process exec 更改为 spawn

Change the code from child process exec to spawn

我有节点应用程序,我使用 child_process.exec api 工作正常,问题是我们有 maxBuffer 东西遇到问题因此我想将其更改为与 spawn

一起使用

代码 before 就像(这段代码工作正常,我只需要传递 cmd 和选项,它就完成了工作...)

var child = child_process.exec(cmd,options, function (error) {
....
});

现在我将其更改为 spawn 但它不起作用

    var child = child_process.spawn(cmd, options);

    child.stdout.on('data', function (data) {
        console.log('stdout: ' + data);
    });

    child.stderr.on('data', function (data) {
        console.log('stderr: ' + data);
    });

这里出现错误

Error: spawn ENOENT
at errnoException (child_process.js:988:11)
at Process.ChildProcess._handle.onexit (child_process.js:779:34)
stderr: execvp(): No such file or directory

知道我在这里遗漏了什么吗?

使用 spawn 启动子进程时,需要将命令与参数分开。

如果你有:

child_process.exec('somecmd somearg somearg2', options, function() {...});

您现在需要:

child_process.spawn('somecmd', ['somearg', 'somearg2'], options);

如果没有要使用的参数,则传递一个空数组:

child_process.spawn('somecmd', [], options);