Nodemon: يتعارض معالج الأحداث Nodemon SIGINT مع الغزل

تم إنشاؤها على ٣٠ أبريل ٢٠١٨  ·  4تعليقات  ·  مصدر: remy/nodemon

package.json :

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

start.js :

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

في المحطة:

# 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

دون require('nodemon') الخط، و start.js عملية سيقتل بشكل صحيح من قبل الغزل.

لاحظ أن هذه ليست مشكلة مع npm run . قد يكون مرتبطًا (غير متأكد) بـ https://github.com/yarnpkg/yarn/issues/4667. سبب تقديمي لمشكلة على Nodemon هو أنني أعتقد أن هذه قد تكون مشكلة مع Nodemon وليس Yarn.

عند الحاجة ، يقوم Nodemon بتثبيت معالج حدث SIGINT . عندما يحصل الغزل على CTRL-C ، فإنه يعيد توجيهه إلى script.js ولكن هذا الأمر عبارة عن noop لأن SIGINT لديه معالج حدث.

المثال مفتعل قليلاً من أجل تحديد المشكلة ، ولكن في سيناريو من الحياة الواقعية:

  • بدلاً من setTimeout() لديّ gulp.watch()
  • مطلوب Nodemon ولكن يتم تشغيله فقط مع مهام Gulp محددة
  • ينتج عن هذا عدم إنهاء مهام مشاهدة Gulp الخاصة بي عند CTRL-C عند تشغيل Gulp عبر Yarn

يتمثل أحد الحلول البديلة في طلب Nodemon بشكل مشروط فقط عندما أقوم بإنشاء مثيل له ، ولكن هذا يبدو وكأنه اختراق أكثر منه حل حقيقي.

الإصدارات: Node.js 8.11.0 و Nodemon 1.17.3 و yarn 1.6.0 و Ubuntu 17.10

bug has PR

ال 4 كومينتر

إنها _is_ الغزل ، أنا قادر على التكرار باستخدام الغزل ، ولكن ليس باستخدام npm:

screen shot 2018-04-30 at 14 51 02

_but_ إنه أيضًا شيء يمكنني إصلاحه داخل nodemon أيضًا. تمسك جيدا.

نعم يبدو أن العلاقات العامة تعمل على حل هذه المشكلة مباشرة! شكرا جزيلا ، كان ذلك سريعا!

ehmicky ليس سريعًا بشكل خاص ، فقط محظوظ

remy لست متأكدًا مما إذا كانت هناك مشكلة أخرى ، ولكن ما زلت أواجه هذه المشكلة.
عندما أقوم بتشغيل عملية باستخدام nodemon مباشرة ، لا توجد مشاكل. عندما أقوم بتشغيله بـ yarn ، فلا مشكلة. عندما أقوم بدمج yarn و nodemon ، لا يمكنني أبدًا الحصول على عملية الإنهاء ، حيث يتعين علي الضغط على CTRL-C مرتين.

لقد قمت بإنشاء سؤال SO مع مزيد من التفاصيل هنا: https://superuser.com/questions/1594660/why-does-zsh-keep-running-after-exiting-a-process-with-ctrl-c-until-ctrl -c-is-p

راجع أيضًا https://github.com/remy/nodemon/issues/1647 ، هذا بالضبط ما أواجهه.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

hkeio picture hkeio  ·  3تعليقات

Exeteres picture Exeteres  ·  4تعليقات

fabianMendez picture fabianMendez  ·  4تعليقات

Makoehle picture Makoehle  ·  3تعليقات

olalonde picture olalonde  ·  3تعليقات