2017-06-29 2 views
2

Hier ist ein Beispiel, in dem Kindprozess error nicht ausgelöst wird:Fangen Fehler von gelaicht Node.js Prozess

const spawn = require('child_process').spawn; 
const childProcess = spawn('tar', ['--wrong-option'], { stdio: 'inherit' }); 

childProcess.on('error', err => { 
    console.error('err: ', err); 
}); 

Warum ist es so? Wie kann der Fehler (insbesondere der Fehlercode) vom erzeugten Prozess abgefangen werden?

Antwort

4

error Ereignisse werden nur generiert, wenn das Starten des Kindes selbst ein Problem verursacht; zum Beispiel, wenn die ausführbare Datei nicht existiert.

Um Fehler „geworfen“ durch das Kind Prozess zu fangen, sollten Sie für exit Ereignisse hören und die code und signal Argumente prüfen:

childProcess.on('exit', (code, signal) => { 
    if (code) { 
    console.error('Child exited with code', code) 
    } else if (signal) { 
    console.error('Child was killed with signal', signal); 
    } else { 
    console.log('Child exited okay'); 
    } 
}); 
+0

Dank, macht es Sinn! – estus