将代码从子进程exec更改为spawn

时间:2015-10-01 11:44:07

标签: javascript node.js child-process spawn

我是节点应用程序,我使用了child_process。 exec api工作正常,问题是有maxBuffer事情我们遇到了麻烦因此我想改变它以使用产卵

之前的代码就好了(这段代码工作得很好我只需要传递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

任何想法我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

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

如果你有:

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

您现在需要:

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

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

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