デバッガーが何であるか本当にを理解しているところが最も緩いので、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
ノードオプションで設定したパターンとは常に異なるという点を除いて、私がまだ発見したパターンに従ってではありませんが、変化します。
エラーメッセージは確かに非常に不明確です。 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デバッガーがソースコードを操作せずに行うべきことです。しかし、それが唯一の方法のようです(今のところ)。
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)の実行構成ダイアログに変数を入力しようとすると、次のようになります。
その結果、次の実際のコマンドが不正になります。
スクリプトの引数として:
"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スクリプトコマンドに追加します。