2016-05-12 17 views
13

考慮到我對調試器確實做的事情只有最寬鬆的理解,我需要幫助爲express.js應用程序設置WebStorm npm調試配置。WebStorm NPM調試配置中的連接被拒絕

這裏的我,所以我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是節點調試器正在偵聽的隨機端口。這並不重要。您在package.json中添加了$ NODE_DEBUG_OPTION到node命令,因爲它是寫在消息中的嗎?除非有這個變量,否則你不能調試npm腳本 - 它需要在調試模式下啓動npm生成的節點 – lena

+1

就是這樣。 (我承認,當時我以爲我以某種方式想象它不是一個字面值字符串值,但是一些env變量或某些類型),我感到困惑。如果你回答下面的問題,我會接受你的答案。 – Ben

回答

14

錯誤消息確實很不清楚。您需要調整package.json中的npm腳本條目(遺憾)。發現在這個博客帖子的清晰描述: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" 
} 

我不覺得這方法特別乾淨,海事組織這是故宮調試器應爲你做什麼,而無需操縱的源代碼。但它似乎是唯一的方法(現在)。

+0

我同意,這將是不可取的,但我能夠從命令行(npm運行配置)將$ NODE_DEBUG_OPTION傳遞給腳本,這真的是所有需要的。無需編輯源代碼。 – Ben

+0

你到底是怎麼做到的?你能確切地指定你在「參數」中放置了什麼嗎?我所嘗試的任何事情都是成功的,我必須在這裏失去一些東西 –

+4

在Webstorm的「運行/調試配置」窗口中,可以將「$ NODE_DEBUG_OPTiON」傳遞給參數字段中的腳本。 (它應該是一個npm配置) – Ben

3

我從來不需要在Node或Webstorm的早期版本中使用它。不知道現在需要更改哪個選項。

但是,我不得不將它添加到package.json,但是,將它添加到運行配置不起作用。而且我必須製作一個單獨的腳本,因爲它在運行任何腳本而沒有調試時破壞。

這裏是我的package.json(注意:Windows風格變量VAR%%,使用$ VAR的類Unix系統):

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

然後,當我想調試我使用調用運行配置調試選項 - 因爲至少在Windows中,節點在沒有被替換時逐字地取出變量。


如果您嘗試在Webstorm(2016.3)中輸入變量,3)運行配置對話框:

Webstorm Run Configuration

它導致這些實際的命令,這是不正確的:

作爲腳本參數:

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

作爲節點選項:

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

但是,似乎需要將選項傳遞給NPM,而不是npm腳本(前者),而不是節點(後者),並且在對話框中沒有辦法做到這一點,據我所知。因此,添加到package.json腳本命令。

+0

請注意,這可能與2017.1.4相關:https://youtrack.jetbrains.com/issue/IDEA-149344 – Nick

+0

針對所有的問題......這啓用了調試。 :+1: – tiffon