从子进程exec到spawn的更改不起作用

时间:2015-10-15 06:51:20

标签: node.js child-process

我使用子进程 exec ,我需要切换到子进程spawn

这对我有用。

var child = child_process.exec("npm install express --save" options, function (error, stdout, stderr) {
    .....
 });

当我切换到产生它不起作用我得到错误

var child = child_process.spawn("npm install express --save" options);


Error: spawn npm ENOENT
    at exports._errnoException (util.js:746:11)
    at Process.ChildProcess._handle.onexit (child_process.js:1053:32)
    at child_process.js:1144:20

我甚至尝试过 var child = child_process.spawn("npm", ["install express --save"], options);

它对我不起作用,可能是什么问题?

1 个答案:

答案 0 :(得分:0)

我猜你是在Windows环境中。

所以,你必须输入终端,然后使用你想要的命令。

我们在Node.js中看到docs child_process.exec()方法默认情况下根据操作系统在其选项中有此规范。

  

shell String用于执行命令的Shell(默认值:' / bin / sh' on   UNIX,' cmd.exe'在Windows上,shell应该理解-c开关   在UNIX上或Windows上的/ s / c。在Windows上,命令行解析应该   与cmd.exe兼容。)

因此,当使用spawn时,情况正在发生变化。

var child = child_process.spawn("cmd",["/c","npm install express --save"], options);

上面的代码块,启动Windows命令解释器(cmd)的新实例并执行string指定的命令然后终止(/c),最后我们的特定命令npm install express --save适用于Windows命令解释器。windows cmd commands references