2 votes

Capture des erreurs du processus Node.js spawned

Voici un exemple où le processus enfant error n'est pas tiré :

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

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

Pourquoi en est-il ainsi ? Comment l'erreur (le code d'erreur en particulier) peut-elle être récupérée à partir du processus spawned ?

4voto

robertklep Points 29669

error ne sont générés que lorsque le lancement de l'enfant lui-même pose un problème ; par exemple, lorsque l'exécutable n'existe pas.

Pour attraper les erreurs "lancées" par le processus enfant, il faut écouter exit et vérifiez les code y signal arguments :

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');
  }
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X