【发布时间】:2017-12-12 16:47:21
【问题描述】:
我正在使用此代码:
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'});
对吗?
【问题讨论】:
标签: node.js shell cmd child-process spawn