78

サーバー側のコードをデバッグする良い方法を知っている人はいますか? Node.js デバッグを有効にしてから node-inspector を使用しようとしましたが、コードが表示されません。

最終的に console.log を使用することになりますが、これは非常に非効率的です。

更新: Linux マシンで次の手順が機能することがわかりました。

  1. Meteor を実行すると、2 つのプロセスが生成されます。

    プロセス1: /usr/lib/meteor/bin/node /usr/lib/meteor/app/meteor/meteor.js

    プロセス 2: /usr/lib/meteor/bin/node /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js --keepalive

  2. process2 で kill -s USR1 を送信する必要があります

  3. node-inspector を実行すると、サーバー コードが表示されます

最初の試みで、/usr/lib/meteor/bin/meteor にある meteor 起動スクリプトの最後の行を次のように変更します。

exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "$@"

NODE_DEBUG=--debug meteorコマンドプロンプトで実行します。これは process1 に --debug フラグを設定するだけなので、node-inspector には meteor ファイルしか表示されず、コードを見つけることができませんでした。

誰かがこれを Windows および Mac マシンで確認できますか?

4

12 に答える 12

88

Meteor 0.5.4 では、これがずっと簡単になりました。

まず、ターミナルから次のコマンドを実行します。

npm install -g node-inspector
node-inspector &
export NODE_OPTIONS='--debug-brk'
meteor

次に、ブラウザーで開いhttp://localhost:8080て、node-inspector コンソールを表示します。

アップデート

Meteor 1.0以降、入力するだけです

meteor debug

これは基本的に上記のコマンドのショートカットであり、前述のようにブラウザーでノード インスペクターを起動します。

アップデート

Meteor 1.0.2 では、コンソールまたはシェルが追加されました。変数を出力し、サーバーでコマンドを実行すると便利な場合があります。

meteor shell
于 2013-02-22T10:20:59.337 に答える
16

Meteor アプリは Node.js アプリです。meteor [run]コマンドを使用して Meteor アプリを実行する場合、デバッグ モードで起動するように環境変数を構成NODE_OPTIONSnodeできます。

NODE_OPTIONS環境変数値の例:

  • --debug
  • --debug=47977- ポートを指定
  • --debug-brk- 最初のステートメントで中断する
  • --debug-brk=5858- ポートを指定し、最初のステートメントで中断する

すると、同じシェルから実行されるexport NODE_OPTIONS=--debugすべてのコマンドが環境変数を継承します。meteorまたは、NODE_OPTIONS="--debug=47977" meteor.

デバッグするには、別のシェルで実行してから、実行するように指示されているかどうかに関係なく、node-inspectorに進みます。http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>node-inspector

于 2013-02-14T11:07:28.807 に答える
10

node.js をデバッグ モードで起動するには、次のようにしました。

  1. /usr/lib/meteor/app/meteor/run.js を開く
  2. nodeOptions.push(path.join(options.bundlePath, 'main.js')); 
    

    追加

    nodeOptions.push('--debug');
    

デバッガー Eclipse をアタッチするための追加の実用的な手順を次に示します。

  1. ここでは「--debug」の代わりに「--debug-brk」を使用します。これは、Eclipse をデバッガーとして使用して node.js をアタッチする方が簡単だからです。
  2. 「デバッガー」を追加します。デバッグしたいコードで(個人的にはこの方法が好きです)
  3. コンソールで流星を実行する
  4. Eclipse で node.js にアタッチ (V8 ツール、localhost:5858 にアタッチ)
  5. 実行し、デバッガーがヒットするのを待ちます

meteor app フォルダーで meteor を起動すると、コンソールに「 debugger listens on port 5858 」と表示されます。

于 2012-07-29T13:15:22.740 に答える
7

GUI を介してブレークポイントを設定するのが好きです。これにより、アプリからデバッグ コードを削除することを覚えておく必要がなくなります。

これは、ローカルの流星アプリのサーバー側でそれを行う方法です。

meteor debug

この方法でアプリを起動します。

表示されたアドレスで Chrome を開きます。https://github.com/node-inspector/node-inspectorをインストールする必要があるかもしれません (現在、Meteor にバンドルされている可能性がありますか?よくわかりません)。

いくつかの奇妙な内部 meteor コードが表示されます (作成したアプリ コードではありません)。再生を押してコードを実行します。このコードは、サーバーを起動して接続をリッスンするだけです。

再生を押した後にのみ、デバッガーのフォルダー構造に"app"という新しいディレクトリが表示されます。そこには流星のプロジェクト ファイルがあります。必要な行にブレークポイントを設定します。

アプリのローカル アドレスを開きます。これにより、サーバー側のコードが実行され、ブレークポイントに到達できるはずです!

注: アプリを再起動するたびに、インスペクターを再度開いて、このプロセスをもう一度実行する必要があります。

于 2015-11-02T16:11:37.287 に答える
5

なぜうまくいかなかったのかわかりません。
コンソール(Mac)で次の手順を実行することで使用できます。

$ ps  
$ kill -s USR1 *meteor_node_process_id*  
$ node-inspector &

上記の手順はhttps://github.com/dannycoates/node-inspectorに記載されています。実行中のノードプロセスに node-inspector をアタッチするためのものです。

于 2012-06-14T18:21:35.383 に答える
4

meteor-inspectorという小さな meteor パッケージを作成しました。これにより、node-inspector を使用して meteor アプリを簡単にデバッグできます。node-inspector のライフサイクルを内部的に管理するため、一部のファイルが変更された後に手動でデバッガーを再起動する必要はありません。

詳細と具体的な使用方法については、https://github.com/broth-eu/meteor-inspectorをご覧ください。

于 2013-12-14T10:07:24.383 に答える
3

オープンソース開発者向けの無料の強力な IDE であるWebStormを使用すると、サーバー側のデバッグがはるかに簡単になります。

Windowsでテストしましたが、構成は簡単でした-私の回答を参照してください。

于 2014-02-12T02:03:00.120 に答える
3

私の問題を解決するインスペクターは流星サーバー コンソールです。これをインストールするために私が従ったプロセスは次のとおりです。

  1. プロジェクト フォルダーに、スマート パッケージを追加しますserver-eval

    mrt add server-eval
    

    Meteor 1.0 の場合:

    meteor add gandev:server-eval
    
  2. メテオを再起動します。

  3. ここcrxから Chrome 拡張ファイルをダウンロードします。
  4. Chrome で拡張機能のページを開き、crxファイルを拡張機能のページにドラッグします。
  5. Chrome を再起動します。
  6. Web インスペクタをチェックアウトして、サーバー側のコードを評価します。

    ここに画像の説明を入力

node-inspector と比較して、より明確な出力が得られます。

于 2014-07-01T23:11:03.363 に答える