0
我使用这个代码:在Windows上产生child_process的NodeJs脚本,为什么我需要'shell:true'来处理ENOENT错误?
const {
spawn
} = require('child_process');
let info = spawn('npm', ["-v"]);
info.on('close',() => {
console.log('closed');
}
但我有此错误:如果我改用
events.js:182
throw er; // Unhandled 'error' event
^
Error: spawn npm ENOENT
at exports._errnoException (util.js:1022:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:189:19)
at onErrorNT (internal/child_process.js:366:16)
at _combinedTickCallback (internal/process/next_tick.js:102:11)
at process._tickCallback (internal/process/next_tick.js:161:9)
at Function.Module.runMain (module.js:607:11)
at startup (bootstrap_node.js:158:16)
at bootstrap_node.js:575:3
:
let info = spawn('npm', ["-v"], {shell: true});
它的作品!
但为什么我需要shell: true
?我还需要查看该产卵的标准输出,所以我也使用这个:
let info = spawn('npm', ["-v"], {shell: true, stdio: 'inherit'});
它是正确的?
是的,当然,但我需要的标准输出“活”没有我的命令结束。如何与exec? –
我得到了你使用产卵的原因,你有没有尝试cwd作为参数?我已经更新了代码。请尝试一下。 –
是不是在windows的cwd上工作。我尝试了每种路径模式:绝对,相对,后退和前进斜线。没有。 –