私はこのコードを使用しています:Windowsでchild_processが生成されたNodeJsスクリプト。なぜENOENTエラーのために 'shell:true'が必要なのですか?
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'});
正しいですか?
はい、私はstdoutがない私のコマンドの末尾に「生きる」必要があります。
Without shell: true
は、あなたは、コードを使用することができます。どのようにexecと一緒に? –私はスポーンを使用するあなたの理由がある、パラメータとしてcwdを試してみましたか?私はコードを更新しました。試してみてください。 –
Windows上でcwdが動作していません。私はすべてのパスモードを試しました:絶対、相対、前後、スラッシュ。何もない。 –