Nodemon: Penangan kejadian SIGINT Nodemon bentrok dengan Yarn

Dibuat pada 30 Apr 2018  ·  4Komentar  ·  Sumber: remy/nodemon

package.json :

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

start.js :

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

Di 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

Tanpa baris require('nodemon') , proses start.js akan benar-benar mati oleh benang.

Perhatikan bahwa ini bukan masalah dengan npm run . Ini mungkin terkait (tidak yakin) dengan https://github.com/yarnpkg/yarn/issues/4667. Alasan saya mengirimkan masalah di Nodemon adalah karena menurut saya ini mungkin masalah dengan Nodemon bukan Yarn.

Jika diperlukan, Nodemon menginstal event handler SIGINT . Ketika benang mendapat CTRL-C , itu meneruskannya ke script.js tetapi ini adalah noop karena SIGINT memiliki penangan kejadian.

Contohnya sedikit dibuat-buat untuk menunjukkan masalahnya, tetapi dalam skenario kehidupan nyata:

  • daripada setTimeout() Saya memiliki gulp.watch()
  • Nodemon diperlukan tetapi hanya dijalankan dengan tugas Gulp tertentu
  • ini menghasilkan tugas menonton Gulp saya untuk tidak keluar pada CTRL-C saat Gulp dijalankan melalui Yarn

Salah satu solusinya adalah dengan mensyaratkan Nodemon secara bersyarat hanya ketika saya akan membuatnya, tetapi ini terasa lebih seperti peretasan daripada solusi nyata.

Versi: Node.js 8.11.0, Nodemon 1.17.3, yarn 1.6.0, Ubuntu 17.10

bug has PR

Semua 4 komentar

Itu _is_ benang, saya bisa mereplikasi dengan benang, tetapi tidak dengan npm:

screen shot 2018-04-30 at 14 51 02

_but_ itu juga sesuatu yang bisa saya perbaiki di dalam nodemon juga. Berpegangan kuat.

Ya, PR sepertinya langsung memperbaiki masalah ini! Terima kasih banyak, cepat!

@ehmicky tidak terlalu cepat, hanya beruntung memiliki waktu luang sebelum saya harus membuatkan anak-anak saya makan malam.

@remy Tidak yakin apakah ini mungkin masalah lain, tapi sepertinya saya masih mengalami masalah ini.
Ketika saya menjalankan proses dengan nodemon secara langsung, tidak ada masalah. Ketika saya menjalankannya dengan yarn , tidak masalah. Ketika saya menggabungkan yarn dan nodemon , saya tidak pernah bisa mendapatkan proses untuk keluar, harus menekan CTRL-C dua kali.

Saya telah membuat pertanyaan SO dengan detail lebih lanjut di sini: https://superuser.com/questions/1594660/why-does-zsh-keep-running-after-exiting-a-process-with-ctrl-c-until-ctrl -c-is-p

Lihat juga https://github.com/remy/nodemon/issues/1647 , itulah yang saya hadapi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

Exeteres picture Exeteres  ·  4Komentar

olalonde picture olalonde  ·  3Komentar

joelgetaction picture joelgetaction  ·  5Komentar

piton13 picture piton13  ·  3Komentar

giacomorebonato picture giacomorebonato  ·  5Komentar