'forever'を使用してアプリケーションを実行します。実行中の環境に接続して、アプリケーションを検査したいと思います。それで、なにかお手伝いできますか?
7 に答える
http://nodejs.org/api/debugger.htmlから:
高度な使用法
V8デバッガーは、-debugコマンドラインフラグを使用してNodeを起動するか、SIGUSR1を使用して既存のNodeプロセスに信号を送ることにより、有効にしてアクセスできます。
プロセスのPIDを見つけて、node
送信SIGUSR1
するとうまくいくはずです。
kill -s SIGUSR1 nodejs-pid
次に、実行node-inspector
して、表示されているURLを参照します。このチュートリアルの詳細。
Node 6.3以降、ノードには次の操作を行うことでトリガーできるデバッガーが組み込まれています(本番アプリでも)。
kill -USR1 <node-pid>
ノードプロセスは次のようなものを吐き出します:
Debugger listening on ws://127.0.0.1:9229/f3f6f226-7dbc-4009-95fa-d516ba132fbd
For help see https://nodejs.org/en/docs/inspector
- ブラウザからサーバーにアクセスできる場合は、で使用でき
chrome://inspect
ますhttp://host.domain:9229
。 ブラウザ経由で接続できない場合(たとえば、サーバーがファイアウォールで保護された実稼働クラスター内にある場合)、REPLをアクティブ化して、コマンドラインで検査できます。
node inspect -p <node-pid>
- ブラウザからサーバーにアクセスできないが、そのサーバーにSSHで接続できる場合は、SSHポートフォワーディング()を設定すると、数秒後に
ssh -nNTL 9229:localhost:9229 <username>@<your_host> -i <keyfile>.pem
スクリプトが表示されます。chrome://inspect
このバージョンより前node-inspector
は、ノードプロセスをデバッグするための別個のツールでした。ただし、独自のページに記載されているように、現在バンドルされているデバッガーはアクティブに保守され、より高度な機能を提供するため、ほとんどの場合非推奨になっています。この変更の詳細については、このスレッドを参照してください。
Windowsユーザー
/編集2022
これは私が現在使用しているもので、settings.jsonで構成されています。これにより、プロセスを選択するように求められ、デバッグ信号が自動的に送信されます。何が起こっているのかを理解するには、以下をお読みください。
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Process (Pick)",
"type": "node",
"request": "attach",
"processId": "${command:PickProcess}",
"port": 9229,
}
]
},
以前
POSIXシグナルをサポートしていないWindowsを使用している場合は、別の cmd
からこの回避策を使用できます。
node -e "process._debugProcess(PID)"
詳細なガイド、またはVSCodeでデバッグを設定するには、次の簡単な手順に従います。
- VSCodeで、
launch.json
構成を開くか、ホイールをクリックして新規作成します
(これはデバッグビューですCtrlShiftD) 。
- ノードはデフォルトでポート9229でリッスンするため、次の構成を追加します。
{
"type": "node",
"request": "attach",
"name": "Attach to 9229",
"port": 9229
},
- タスクマネージャーを開き、ノードプロセスのPIDを見つけます。これは、が存在するフォルダーで
識別できます。"build"
index.js
- 別の
cmd
またはを開きgit-bash
、このコマンドを実行します。
ここ21392
で、はプロセスのPIDです。
node -e "process._debugProcess(21392)"
これですべての準備が整います。
私の場合、ノードバージョン6.9.10を実行するには、次のことを行う必要がありました。
kill -USR1 <node-pid>
それから
node debug -p <node-pid>
node inspect -p <node-pid>
このバージョンのノードではコマンドが失敗しました。
それは古いが答えられた質問ですが、より簡単な方法があります。それは、ノードにパラメーターを渡すことです。
forever start -c 'node --debug-brk' main.js
--debug-brk
デバッガーが接続されるのを待ちたくない場合は、次のように置き換えます。--debug
nodejsを検査してデバッグするには、このコマンドを使用します
forever -w -c 'node --inspect=IP:PORT' file.js
- -cカスタムコマンドの場合
- ファイルが再保存されている場合は、 -wを使用してリロードします
- 外部検査のためにIPとポートを渡すことができます
- ポートカスタムは9229です