2016-05-12 5 views
13

असर मैं केवल क्या एक डिबगर वास्तव में कर रही है, मैं एक express.js आवेदन के लिए WebStorm NPM डिबग विन्यास की स्थापना में मदद की जरूरत है की loosest समझ है।`WebStorm NPM डिबग विन्यास में कनेक्शन refused` मन में

यहाँ मुझे इतना far-- मैं अपने सेटिंग्स के साथ डिबग क्लिक के रूप में मुझे लगता है कि वे (नीचे) होना चाहिए:

/Users/me/.nvm/versions/node/v4.4.1/bin/node --debug=8090  
/Users/me/.nvm/versions/node/v4.4.1/lib/node_modules/npm/bin/npm-cli.js run-script start 

To debug "start" script, make sure $NODE_DEBUG_OPTION string is specified as the first argument for node command you'd like to debug. 
For example: 
{ "start": "node $NODE_DEBUG_OPTION server.js" } 
Debugger listening on port 8090 
... 
It has begun. Port: 3000 
इस बिंदु पर

तो, आवेदन अप शुरू कर दिया है और मेरे POSTlocalhost:3000 करने का जवाब , लेकिन मैंने सेट ब्रेकपॉइंट पर तोड़ नहीं दिया है।

डीबगर> वेरिएबल फलक में देख रहे हैं, मुझे Connecting to localhost:57617 दिखाई देता है, फिर एक टूलटिप पॉप अप कहता है कि "कनेक्शन से इनकार कर दिया गया है" और फलक Frame is not available कहता है।

मुझे नहीं पता कि वह पोर्ट नंबर 57617 कहां से आ रहा है। यह भिन्न होता है, हालांकि मैंने अभी तक किसी भी पैटर्न के अनुसार नहीं खोजा है, सिवाय इसके कि यह --debug=X या --debug-brk=X नोड विकल्प में सेट किए गए एक से अलग है।

+1

57617 एक यादृच्छिक पोर्ट नोड डीबगर सुन रहा है। यह वास्तव में कोई फर्क नहीं पड़ता। क्या आपने अपने पैकेज.जेसन में नोड कमांड को $ NODE_DEBUG_OPTION जोड़ दिया है जैसा कि यह संदेश में लिखा गया है? जब तक यह चर वहां नहीं है तब तक आप एनपीएम स्क्रिप्ट को डीबग नहीं कर सकते - डीबग मोड – lena

+1

में एनपीएम द्वारा उत्पन्न नोड शुरू करने की आवश्यकता है। (मैं, मैं इस बारे में उलझन में था, क्योंकि मैंने किसी भी तरह कल्पना की थी कि यह एक शाब्दिक स्ट्रिंग मान नहीं था, लेकिन कुछ env चर या कुछ ऐसे)। यदि आप नीचे दिए गए प्रश्न का उत्तर देते हैं, तो मैं आपका जवाब स्वीकार करूंगा। – Ben

उत्तर

14

त्रुटि संदेश वास्तव में बहुत अस्पष्ट है। आपको package.json (दुख की बात) में अपनी एनपीएम स्क्रिप्ट प्रविष्टि को समायोजित करने की आवश्यकता है। http://pavelpolyakov.com/2016/05/01/webstorm-npm-tasks-debug/

आपका start प्रविष्टि ऐसा दिखाई देगा:

"scripts": { 
    "start": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments" 
} 

तुम भी दो प्रविष्टियों के साथ जा सकते हैं पहले एक सूखा रखने के लिए इस ब्लॉग पोस्ट में एक स्पष्ट वर्णन नहीं मिला। हालांकि यह वास्तव में आवश्यक नहीं है क्योंकि दोनों कमांड लाइन से ठीक है। तो बस पूर्णता 'खातिर:

"scripts": { 
    "start": "someModule --arguments", 
    "startDebug": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments" 
} 

मैं विशेष रूप से स्वच्छ इस विधि नहीं पाते हैं, imo कि क्या NPM डिबगर स्रोत कोड में हेरफेर करने के बिना आप के लिए क्या करना चाहिए है। लेकिन यह एकमात्र तरीका प्रतीत होता है (अभी के लिए)।

+0

मैं सहमत हूं, यह अवांछित होगा, लेकिन मैं कमांड लाइन (एनपीएम रन कॉन्फ़िगरेशन) से स्क्रिप्ट में $ NODE_DEBUG_OPTION पास करने में सक्षम था, जो वास्तव में आवश्यक था। कोई स्रोत संपादन आवश्यक है। – Ben

+0

आपने ऐसा कैसे किया? क्या आप "तर्क" में जो भी डालते हैं उसे ठीक से निर्दिष्ट कर सकते हैं। मैंने जो कुछ भी कोशिश नहीं की वह सफल रही, मुझे यहां कुछ याद आना चाहिए। –

+4

वेबस्टॉर्म की रन/डीबग कॉन्फ़िगरेशन विंडो में, आप तर्क फ़ील्ड में स्क्रिप्ट में "$ NODE_DEBUG_OPTiON" पास कर सकते हैं। (यह एक एनपीएम कॉन्फ़िगर होना चाहिए) – Ben

3

मुझे नोड या वेबस्टॉर्म के पिछले संस्करणों में इसकी आवश्यकता नहीं थी। सुनिश्चित नहीं है कि इस विकल्प की आवश्यकता किसके बदले में बदल गई है।

मुझे इसे package.json में जोड़ना पड़ा, हालांकि, इसे रन कॉन्फ़िगरेशन में जोड़ना काम नहीं करता है। और मुझे एक अलग स्क्रिप्ट बनाना पड़ा क्योंकि बिना किसी स्क्रिप्ट डिबगिंग के चलते यह टूट गया।

यहाँ मेरी package.json (नोट विंडोज शैली चर% वीएआर%, यूनिक्स सिस्टम के के लिए उपयोग $ वीएआर) है:

"scripts": { 
    "start": "node index.js", 
    "debug": "node %NODE_DEBUG_OPTION% index.js", 
}, 

फिर जब मैं चाहता हूँ डिबग करने के लिए मैं एक रन विन्यास कि कॉल का उपयोग डीबग विकल्प - क्योंकि विंडोज़ में कम से कम, जब नोड बदलता है तो नोड शब्द को सचमुच ले रहा है।


यदि आप वेबस्टॉर्म (2016.3) में चर दर्ज करने का प्रयास करते हैं।3) रन विन्यास संवाद:

एक स्क्रिप्ट तर्क के रूप में::

"C:\...\runnerw.exe" "C:\...\node.exe" "C:\...\npm-cli.js" run start %NODE_DEBUG_OPTION%

एक नोड विकल्प के रूप में:

Webstorm Run Configuration

यह इन वास्तविक आदेशों, जो सही नहीं हैं में जो परिणाम

"C:\...\runnerw.exe" "C:\...\node.exe" %NODE_DEBUG_OPTION% "C:\...\npm-cli.js" run start

लेकिन विकल्पों को एनपीएम को पारित करने की आवश्यकता है, न कि एनपीएम स्क्रिप्ट (पूर्व), और नोड (बाद में) नहीं, और जहां तक ​​मुझे पता है, संवाद में ऐसा करने का कोई तरीका नहीं है। इस प्रकार, package.json स्क्रिप्ट कमांड में जोड़ना।

+0

नोट यह 2017.1.4 के लिए प्रासंगिक हो सकता है: https://youtrack.jetbrains.com/issue/IDEA-149344 – Nick

+0

सभी बाधाओं के विरुद्ध ... यह सक्षम डिबगिंग । : +1: – tiffon

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