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()
CTRL-C
عند تشغيل Gulp عبر Yarnيتمثل أحد الحلول البديلة في طلب Nodemon بشكل مشروط فقط عندما أقوم بإنشاء مثيل له ، ولكن هذا يبدو وكأنه اختراق أكثر منه حل حقيقي.
الإصدارات: Node.js 8.11.0 و Nodemon 1.17.3 و yarn 1.6.0 و Ubuntu 17.10
إنها _is_ الغزل ، أنا قادر على التكرار باستخدام الغزل ، ولكن ليس باستخدام npm:
_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 ، هذا بالضبط ما أواجهه.