2014-05-22 20 views
11

के साथ नोड-इंस्पेक्टर मैं node-inspector को एक्सप्रेस 4 ऐप के साथ चलाने की कोशिश कर रहा हूं - मैं इसे एक वाग्रेंट बॉक्स में चला रहा हूं लेकिन बिना किसी समस्या के ब्राउज़र में पृष्ठों को देखने में सक्षम हूं (मेरे पास बंदरगाह हैं मेजबान मशीन के लिए उपलब्ध वानर मशीन)।एक्सप्रेस 4

मैं या तो npm start या node --debug bin/www के साथ एप्लिकेशन को आग लगाता हूं और फिर नोड-डीबगर bin/www शुरू करता हूं। मैं ब्राउज़र में इंस्पेक्टर लोड करता हूं और यह पहली पंक्ति पर प्रारंभिक ब्रेकपॉइंट हिट करता है लेकिन पृष्ठ पर किसी भी क्रिया को डीबग करने के लिए करता है जो ब्रेकपॉइंट ट्रिगर करेगा EADDRINUSE (उर्फ पोर्ट उपयोग में है) त्रुटि का कारण बनता है। मैं थोड़ा सा परेशान हूं कि इसका क्या कारण हो सकता है, हालांकि, यह बहुत संभव है कि मैं कमांड का उपयोग कर रहा हूं जो 4 के बजाय एक्सप्रेस 3 पर काम करेगा। इसके अतिरिक्त, हो सकता है कि कुछ कॉन्फ़िगरेशन हो जो मुझे डीबगर चलाने के लिए याद आ रही है मेजबान मशीन का ब्राउज़र लेकिन योनि बॉक्स पर इंस्पेक्टर चल रहा है?

उत्तर

24

अद्यतन:

नोड --debug बिन/www और फिर नोड डिबगर बिन/www शुरू: मैं बहुत यकीन है कि यह आपकी समस्या है हूँ।

उन दोनों के मत करो। यह एक या दूसरा है। वे एक ही काम करने के 2 तरीके हैं। मैं पूर्व तरीके को पसंद करता हूं क्योंकि यह आसान है और नोड के साथ काम करता है चाहे आप नोड-इंस्पेक्टर का उपयोग कर रहे हों या नहीं।

संक्षेप में: डिबग मोड और नोड निरीक्षक में

  • node-debug bin/www शुरू होता है दोनों अपने अनुप्रयोग एक ही प्रक्रिया
  • node --debug bin/www डिबग मोड में अपने अनुप्रयोग शुरू होता है में। इसे एक अलग टर्मिनल विंडो के साथ जोड़ा जाना चाहिए जहां आप एक अलग प्रक्रिया के रूप में node-inspector चलाते हैं। मैं इस दृष्टिकोण की सिफारिश करता हूं, लेकिन या तो काम करना चाहिए।

यहाँ इस निवारण करने के लिए मेरे सुझाव है। आदेशों की सरलतम रूप उपयोग करने के लिए सब कुछ चल रहा है पाने के लिए प्रयास करें:

अपने आवारा मेजबान अंदर एक ssh सत्र टर्मिनल में
  • , node --debug ./bin/www
    • v8 के साथ अग्रभूमि में सीधे आपके ऐप्लिकेशन शुरू बंदरगाह करने के लिए बाध्य करने की कोशिश करेंगे 5858. आपको यह संदेश "पोर्ट 5858 पर डीबगर सुनना" देखना चाहिए और यह संदेश "पोर्ट 5858 पर सॉकेट खोलने में विफल रहा,"
    • रीट्री करने से पहले 1000 एमएस प्रतीक्षा करने में विफल रहा अगर आपको "पोर्ट 5858 पर सॉकेट खोलने में विफल" संदेश दिखाई देता है , एक और प्रक्रिया पहले से ही सुन रही है। sudo netstat -ntlp चलाने को देखने के लिए जो प्रक्रिया है, समझ यह क्या है और क्यों यह चल रहा है, और फिर अपने आवारा मेजबान के अंदर एक अलग ssh सत्र टर्मिनल में बंदरगाह kill <pid-you-got-from-netstat>
  • मुक्त करने के लिए इसे मारने के लिए, node- शुरू अग्रभूमि में इंस्पेक्टर वेब सर्वर node-inspector। सुनिश्चित करें कि आप सामान्य आउटपुट देखते हैं और कोई त्रुटि नहीं है।
  • अब सही URL जो शायद (जब तक अपने आवारा आईपी/पोर्ट अलग हैं) http://localhost:8080/debug?port=5858 की तरह कुछ
  • अगर आप वहाँ पाने के लिए और किसी भी अप्रत्याशित त्रुटियों आप रास्ते में देखने को हल, चीजें वास्तव में काम करना चाहिए है से कनेक्ट है, लेकिन अगर इस EADDRINUSE त्रुटि के बारे में कुछ सटीक विवरण पोस्ट न करें। क्या यह आपके ऐप के भीतर एक अपवाद है? यदि हां, तो क्या आपके एक्सप्रेस ऐप का एक पुराना उदाहरण पहले से ही आपके योनेंट होस्ट में कहीं और चल रहा है और इस प्रकार आपके एप्लिकेशन के वेब सर्वर पोर्ट पर बाध्य है?
+1

महान प्रतिक्रिया के लिए धन्यवाद। आप बिल्कुल सही हैं - दोनों चल रहे समस्या का कारण बन रहे थे। शुक्र है कि बंदरगाह पर कोई और चीज नहीं चल रही थी, इसलिए आसान कार्रवाई क्या हुई थी :) –

+0

मैं जिस समस्या को कर रहा था वह इस लाइन को निष्पादित कर रहा था $ nodemon --debug app.js यही मुझे $ nodemon --debug चाहिए -ब्रिक बिन/www – blackops

+0

यदि आप अपना ऐप 3000 'http: // localhost: 8080/डीबग? पोर्ट = 5858' पर चल रहे हैं तो 80 से 8080 के बजाय पोर्ट को 3000 में बदलना चाहिए। –

0

वही प्रक्रिया पर्यवेक्षक के साथ काम करती है।

संबंधित मुद्दे