2016-05-12 29 views
13

デバッガの内容を最も熟知していることを念頭に置いての場合、express.jsアプリケーションのWebStorm npmデバッグ設定を設定する際に助けが必要です。WebStorm NPMデバッグ設定で接続が拒否されました

/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までに応答:

はここのでfar--私は、彼らが(下記)であるべきだと思うように私の設定でデバッグをクリックして私ですしかし、私が設定したブレークポイントを壊すことはありません。

デバッガ>変数ペインにはConnecting to localhost:57617が表示され、ツールチップに「接続が拒否されました」というメッセージが表示され、ペインにFrame is not availableと表示されます。

ポート番号57617がどこから来ているのかわかりません。それは私がまだ発見したどんなパターンにもよるものではありませんが、--debug=Xまたは--debug-brk=Xノードオプションで設定したものとは常に異なっています。

+1

57617は、ランダムポートのノードデバッガがリッスンしています。これは本当に問題ではありません。メッセージに書かれているようにpackage.jsonのnodeコマンドに$ NODE_DEBUG_OPTIONを追加しましたか?この変数がなければ、npmスクリプトをデバッグすることはできません.Nodeによって起動されたNodeをデバッグモードで起動する必要があります – 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" 
} 

あなたはまた、最初の1つのDRYを保つために2つのエントリで行くことができる、このブログの記事では明確な記述を見つけました。両方ともコマンドラインからうまく動作するので、実際には必要ではありませんが。だから完全ために:

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

私は特にきれいなこの方法を見つけていない、IMOそれはNPMデバッガがソースコードを操作することなく、あなたのために何をすべきかです。しかし、それは(今のところ)唯一の方法と思われる。

+0

私はそれが望ましくないと思いますが、コマンドラインから$ NODE_DEBUG_OPTIONをスクリプトに渡すことができました(npmの実行コンフィギュレーション)。これは本当に必要なものでした。ソースの編集は必要ありません。 – Ben

+0

どのくらい正確にそうしましたか?あなたは "引数"に入れたものを正確に指定できますか?私が試したことは何も成功しなかった、私はここで何かを欠いているに違いない。 –

+4

WebstormのRun/Debug Configurationsウィンドウで、引数フィールドのスクリプトに "$ NODE_DEBUG_OPTiON"を渡すことができます。 (それはnpmの設定でなければなりません) – Ben

3

これは以前のバージョンのNodeまたはWebstormではこれを必要としませんでした。今すぐこのオプションを必要とする変更が不明です。

package.jsonに追加する必要がありましたが、実行コンフィギュレーションに追加することはできません。 デバッグなしでスクリプトを実行すると、別のスクリプトを作成する必要がありました。

ここに私のpackage.json(Unixライクなシステムため注Windowsスタイル変数%のVAR%で、使用する$ VAR)です:

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

私はデバッグしたいときに、私は呼び出して実行構成を使用しますデバッグオプション - 少なくともWindowsでは、ノードが置き換えられていないときに文字通りvarをとっているためです。


Webstorm(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

しかし、オプションはnpmスクリプトではなく、ノードではなく、NPMに渡す必要があります。私が知る限り、このオプションをダイアログに表示する方法はありません。したがって、package.jsonスクリプトコマンドに追加します。

+0

が見つかりました。これは2017.1.4と関連する可能性があります。https://youtrack.jetbrains.com/issue/IDEA-149344 – Nick

+0

すべてのオッズに対して...これはデバッグを有効にしています。 :+1: – tiffon

関連する問題