为什么这会起作用:
var exec = require("child_process").exec;
var command = exec("grunt");
但这会引发错误:
var spawn = require("child_process").spawn;
var command = spawn("grunt");
它抛出的错误是错误:spawn ENOENT
起初我以为这可能与env
有关,但在exec
和spawn中是完全相同的。
我认为它一定与 Grunt 有关,因为尝试 git
在两者中都有效。
最佳答案
检查 Node docs对于 spawn
我发现:
Note that if spawn receives an empty options object, it will result in spawning the process with an empty environment rather than using process.env. This due to backwards compatibility issues with a deprecated API.
exec 中env
的默认选项是null
,但对于spawn 来说它是process.env
。那么如果两者都获得相同的 env
是不明确的吗?您可以通过为两者明确提供相同的 env
来检查这一点吗?
关于node.js - 为什么调用 child_process 命令可以与 exec 一起使用,但不能与 Spawn 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16586600/