Ich verwende diesen Code:NodeJs Skript mit Child_Process Spawn auf Windows, warum brauche ich 'Shell: True' für ENOENT Fehler?
const {
spawn
} = require('child_process');
let info = spawn('npm', ["-v"]);
info.on('close',() => {
console.log('closed');
}
Aber ich habe diesen Fehler:
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
Wenn ich statt:
let info = spawn('npm', ["-v"], {shell: true});
es funktioniert!
Aber warum brauche ich shell: true
? Ich brauche auch die stdout dieses Laich, um zu sehen, also verwende ich auch dies:
let info = spawn('npm', ["-v"], {shell: true, stdio: 'inherit'});
Es ist richtig?
Ja, natürlich, aber ich brauche die stdout „lebt“ nicht am Ende meiner Befehle. Wie mit der Exekutive? –
Ich habe Ihren Grund der Verwendung von Spawn, haben Sie versucht, cwd als Parameter? Ich habe den Code aktualisiert. Bitte versuchen Sie es. –
Funktioniert nicht auf Windows die cwd. Ich habe jeden Pfadmodus ausprobiert: Absolut, Relativ, Rückwärts und Vorwärts Schrägstrich. Nichts. –