42

ブレークポイントをサポートしていないことを確認するために、node-inspectorをインストールしました:| 大部分のノードコードは非同期であり、ステップバイステップで実行することはできないことを念頭に置いて、そのポイントは何ですか?..

私は間違いなくここでポイントを逃しています...

とにかく、ブレークポイントとすべてを使用してノードコードをデバッグしますか?

4

5 に答える 5

23

yupp、node-inspectorを正常に使用しました。永続的なブレークポイントが必要な場合debugger;は、コードに挿入するだけです。http://nodejs.org/api/debugger.htmlを参照してください。

node --inspect-brk script.js(以前は)を使用して、デバッガーが接続されるまでノードを待機さnode --debug-brk script.jsせることも非常に役立ちます。

于 2012-07-23T12:29:17.823 に答える
16

(ノード8以降の場合)

Node.jsにはデバッガーが組み込まれています。通常、デバッガーをオンにするには次の2つの方法があります。

  1. --inspectまたは--inspect-brkスイッチを使用してNode.jsアプリまたはスクリプトを起動します。例えば:

    $ node.js --inspect index.js

(注:--inspect-brkユーザーコードが開始する前に中断します)

  1. 何らかの理由で--inspectスイッチを使用してNode.jsアプリまたはスクリプトを起動できない場合でも、SIGUSR1(LinuxおよびOS X)でシグナルを送信することにより、Node.jsプロセスにデバッグメッセージのリッスンを開始するように指示できます。ノード8以降では、-inspectスイッチと同じようにInspectorAPIがアクティブになります。

    $ kill -sigusr1 23485

(注:23485を独自のNode.jsプロセスIDに置き換える必要があります)

デバッガーをオンにした状態で、Google Chromeブラウザーを開き、アドレスバーに入力できますchrome://inspect

次に、「リモートターゲット」の下にリストされたエントリが表示されます。先に進み、「検査」をクリックします。

これで、ブレークポイントを設定してコードのデバッグを開始できます。

参照:

  1. https://nodejs.org/en/docs/guides/debugging-getting-started/
  2. stackoverflowに関連する問題: Chrome Devtools DedicatedNode.jsInspectorがブレークポイントで停止しない
于 2018-06-21T15:23:41.557 に答える
6

Node.jsアプリケーションをデバッグするには、デバッグの組み込みメソッドを使用できます。

(1)debugger;ブレークポイントを挿入する場所にステートメントを挿入します。
(2)コマンドを使用してファイルを実行します。$ node inspect <file name>
(3)たとえば、キーを使用しcて次のブレークポイントに進みます。

と入力することで、そのブレークポイントで変数に関連付けられた値をデバッグすることもできますrepl詳しくは公式ガイドをご覧ください。

于 2019-03-30T09:01:59.430 に答える
2

nodemonライブラリを使ってみましたか?ここで見つけることができます

開発目的で、nodemonを実行しているアプリを起動できます。私はこのスクリプトを持っています:

"dev": "nodemon --inspect src/index.js"

debuggerコード内でステートメントに到達するたびに中断します。サーバーコードが表示されているコンソールを開くには、Chromeでコンソールを開き、nodejsアイコンをクリックします。ここに画像の説明を入力してください

また、サーバーにファイルを保存するたびにサーバーを更新するのにも役立ちます。

それがうまくいくかどうか私に知らせてください!

于 2019-06-07T23:00:33.727 に答える
1

ここで少し詳しく説明します。

ブレークポイントを配置する場所にデバッガーを設定してから、ノードdebug script.js/index.jsを使用してコードを実行します。

デバッガーがブレークポイントで停止したら、変数を検査するためにreplを実行する必要があります。

于 2014-04-29T17:32:06.977 に答える