Nodemon: Le gestionnaire d'événements Nodemon SIGINT est en conflit avec Yarn

Créé le 30 avr. 2018  ·  4Commentaires  ·  Source: remy/nodemon

package.json :

{
  ...
  "scripts": {
    "start": "node start.js"
  }
}

start.js :

require('nodemon');
setTimeout(() => {}, 1e6);

Dans le terminal:

# Does not print anything (except `grep` itself), i.e. no node process is running
$ ps aux | grep node
# We run the `start` task then interrupt it with CTRL-C
$ yarn start
yarn run v1.6.0
node start.js
^C
# yarn was killed, but not `start.js`
$ ps aux | grep node
me     4053  0.0  0.0   4608   876 pts/2    S    14:29   0:00 /bin/sh -c node start.js
me     4054  0.0  0.0 873592 28564 pts/2    Sl   14:29   0:00 node start.js

Sans la ligne require('nodemon') , le processus start.js serait correctement tué par le fil.

Notez que ce n'est pas un problème avec npm run . Cela pourrait être lié (pas sûr) à https://github.com/yarnpkg/yarn/issues/4667. La raison pour laquelle je soumets un problème sur Nodemon est que je pense que cela pourrait être un problème avec Nodemon not Yarn.

Lorsqu'il est requis, Nodemon installe un gestionnaire d'événements SIGINT . Quand yarn obtient un CTRL-C , il le transmet à script.js mais c'est un noop car SIGINT a un gestionnaire d'événements.

L'exemple est un peu artificiel pour cerner le problème, mais dans un scénario réel:

  • au lieu de setTimeout() J'ai gulp.watch()
  • Nodemon est requis mais n'est exécuté qu'avec des tâches Gulp spécifiques
  • cela entraîne que mes tâches de surveillance Gulp ne se terminent pas sur CTRL-C lorsque Gulp est exécuté via Yarn

Une solution de contournement est d'exiger conditionnellement Nodemon uniquement lorsque je vais l'instancier, mais cela ressemble plus à un piratage qu'à une vraie solution.

Versions: Node.js 8.11.0, Nodemon 1.17.3, fil 1.6.0, Ubuntu 17.10

bug has PR

Tous les 4 commentaires

C'est du fil, je suis capable de le répliquer avec du fil, mais pas avec npm:

screen shot 2018-04-30 at 14 51 02

_mais_ c'est aussi quelque chose que je peux corriger à l'intérieur de nodemon aussi. Tenir fermement.

Oui, le PR semble résoudre directement ce problème! Merci beaucoup, c'était rapide!

@ehmicky pas particulièrement rapide, juste de la chance d'avoir du temps

@remy Je ne sais pas si c'est peut-être un autre problème, mais il me semble toujours y avoir affaire.
Lorsque j'exécute un processus avec nodemon directement, aucun problème. Quand je l'exécute avec yarn , pas de problème. Lorsque je combine yarn et nodemon , je ne peux jamais faire sortir le processus, car je dois appuyer deux fois sur CTRL-C.

J'ai créé une question SO avec plus de détails ici: https://superuser.com/questions/1594660/why-does-zsh-keep-running-after-exiting-a-process-with-ctrl-c-until-ctrl -c-est-p

Voir aussi https://github.com/remy/nodemon/issues/1647 , c'est exactement ce que je rencontre.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Mohammad-Quanit picture Mohammad-Quanit  ·  5Commentaires

remy picture remy  ·  5Commentaires

binarykitchen picture binarykitchen  ·  5Commentaires

Exeteres picture Exeteres  ·  4Commentaires

dimsmol picture dimsmol  ·  4Commentaires