معنى - Node.js: تفقد ما تبقى في حلقة الأحداث التي تمنع البرنامج النصي من الخروج بشكل طبيعي




npm (2)

لن يتم إنهاء البرنامج النصي Node.js إذا كان هناك عمليات رد اتصال متبقية في حلقة الحدث الرئيسية. بينما يمكن للمرء إنهاء البرنامج النصي بقوة عن طريق استدعاء process.exit() أو إلقاء استثناءات ، فمن المستحسن السماح للبرنامج النصي بإنهاء "بشكل طبيعي" ، عن طريق القيام بالتنظيف المناسب دائمًا. ومع ذلك ، قد يصعب هذا في بعض الأحيان لأن الأخطاء في التعليمات البرمجية قد تمنع التنظيف السليم ، على سبيل المثال ، قد أنسى إزالة IntervalObject عندما لم تعد هناك حاجة ، وما إلى ذلك ، مما يمنع البرنامج في النهاية من الإنهاء.

لذلك ، هل هناك طريقة لتصحيح البرنامج النصي غير المنتهي لمعرفة ما تبقى مسجلاً في حلقة الحدث؟ بمعنى آخر ، هل هناك طريقة في Node.js لتصحيح ما يمنع البرنامج من الخروج؟


تستخدم حزمة wtfnode الأدوات المذكورة بواسطةmscdex ولكنها تقدم بطريقة أكثر ملاءمة للمطور. أنا أوصى هذا لتعقب هذه الانزعاج.

const wtf = require('wtfnode');

// ...

wtf.dump();

يمكنك استدعاء process._getActiveRequests() للحصول على قائمة بطلبات I / O النشطة و process._getActiveHandles() للحصول على قائمة بأوصاف الملفات / واصفات الملفات المفتوحة.