web-dev-qa-db-ja.com

WebStorm NPMデバッグ構成の「接続が拒否されました」

デバッガーが何であるか本当にを理解しているところが最も緩いので、express.jsアプリケーション用の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

したがって、この時点でアプリケーションが起動し、POSTからlocalhost:3000に応答しますが、設定したブレークポイントでブレークしません。

Debugger> Variablesペインを見るとConnecting to localhost:57617が表示され、次にツールチップがポップアップして「接続が拒否されました」とペインにFrame is not availableと表示されます。

そのポート番号57617の送信元がわかりません。 --debug=Xまたは--debug-brk=Xノードオプションで設定したパターンとは常に異なるという点を除いて、私がまだ発見したパターンに従ってではありませんが、変化します。

18
Ben

エラーメッセージは確かに非常に不明確です。 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"
}

2つのエントリを使用して、最初のエントリをDRYに保つこともできます。どちらもコマンドラインから問題なく実行できるため、実際には必要ありません。したがって、完全を期すために:

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

私はこの方法が特にきれいであるとは思いません。imoは、npmデバッガーがソースコードを操作せずに行うべきことです。しかし、それが唯一の方法のようです(今のところ)。

15
smets.kevin

NodeまたはWebstormの以前のバージョンでは、これが必要になることはありませんでした。現在このオプションを必要とする変更がどれかわかりません。

package.jsonに追加する必要がありましたが、実行構成に追加しても機能しません。そして、別のスクリプトを作成する必要がありました。デバッグせずにスクリプトを実行すると壊れたためです

これが私のpackage.jsonです(Windowsスタイルの変数%VAR%に注意してください、Unixのようなシステムには$ VARを使用してください):

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

次に、デバッグする場合は、デバッグオプションを呼び出す実行構成を使用します。少なくともWindowsでは、nodeは、varが置き換えられていない場合、文字どおりにvarをとっています。


Webstorm(2016.3.3)の実行構成ダイアログに変数を入力しようとすると、次のようになります。

Webstorm Run Configuration

その結果、次の実際のコマンドが不正になります。

スクリプトの引数として:

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

Nodeオプションとして:

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

しかし、オプションは、npmスクリプト(以前)ではなく、ノード(後半)ではなく、NPMに渡す必要があるようです。私が知る限り、ダイアログでそれを行う方法はありません。したがって、package.jsonスクリプトコマンドに追加します。

4
Nick