लटकता है मैंने node.js में एक मॉड्यूल लिखा है जो कुछ नेटवर्क ऑपरेशन करता है। मैंने एक छोटी सी लिपि लिखी जो इस मॉड्यूल का उपयोग करती है (नीचे check
परिवर्तनीय)। ऐसा लगता है:node.js: प्रोग्राम या तो अप्रत्याशित रूप से बाहर निकलता है या बस
check(obj, function (err, results) {
// ...
console.log("Check completed");
});
अब दिलचस्प बात है। जब यह कोड mocha
परीक्षण के भाग के रूप में निष्पादित होता है, तो परीक्षण अपेक्षा के अनुसार बाहर निकलता है। मैं लॉग स्टेटमेंट मुद्रित देखता हूं और प्रक्रिया निकलती है।
जब कोड को स्टैंडअलोन नोड स्क्रिप्ट के रूप में निष्पादित किया जाता है, तो लॉग स्टेटमेंट मुद्रित हो जाता है, लेकिन प्रक्रिया बस लटकती है।
जब मैं इसे डीबग करने का प्रयास करता हूं और मैं --debug-brk
का उपयोग कर प्रोग्राम शुरू करता हूं और node-inspector
का उपयोग करता हूं, तो यह जल्दी से निकलता है! मुझे लगता है कि process.on 'exit'
कहा जाता है। यह निकलता है जबकि मॉड्यूल के भीतर कुछ आंतरिक कॉलबैक अभी तक नहीं बुलाए गए थे। तो ऊपर लॉग कथन या तो मुद्रित नहीं है।
मैं अब अटक गया हूं और मुझे यकीन नहीं है कि यह क्यों हो रहा है। क्या किसी ने भी समान व्यवहार देखा है?
क्या पता लगाने के लिए कोई रास्ता नहीं है कि नोड को क्या खोल रहा है? – Aishwar
यदि आपके पास नोड-इंस्पेक्टर है और प्रक्रिया से जुड़ा हो सकता है और शायद नोड के ईवेंट लूप कोड में ब्रेक पॉइंट सेट कर सकता है। मैंने इनमें से किसी एक को सफलतापूर्वक ट्रैक नहीं किया है। यह या तो स्पष्ट चीजें हैं जैसे डीबी कनेक्शन खोलना, लेकिन इसे स्पष्ट रूप से बंद नहीं करना, या मैं सिर्फ 'process.exit()' करता हूं और अपने जीवन के साथ आगे बढ़ता हूं। –
process._getActive हैंडल() और process._getActiveRequests() http://stackoverflow.com/questions/17960452/how-can-i-get-a-list-of-callbacks-in-the-node-work-queue देखें -या-क्यों-wont-node-ex – aaron