web-dev-qa-db-ja.com

Meteor:サーバー側でのデバッグ

誰もがサーバーサイドコードをデバッグするための良い方法を知っていますか? Node.jsデバッグを有効にしてからノードインスペクターを使用しようとしましたが、コードが表示されません。

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

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

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

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

    process2:/ usr/lib/meteor/bin/node /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js --keepalive

  2. プロセス2でkill -s USR1を送信する必要があります

  3. Node-inspectorを実行すると、サーバーコードを確認できます

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

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

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

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

78
user1416682

Meteor 0.5.4では、これは非常に簡単になりました。

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

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

そして、http://localhost:8080ブラウザで、ノードインスペクタコンソールを表示します。

更新

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

meteor debug

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

更新

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

meteor Shell
88

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

NODE_OPTIONS環境変数値の例:

  • --debug
  • --debug=47977-ポートを指定します
  • --debug-brk-最初のステートメントでブレーク
  • --debug-brk=5858-ポートを指定し、最初のステートメントでブレークします

export NODE_OPTIONS=--debugの場合、同じシェルから実行されるすべてのmeteorコマンドは環境変数を継承します。または、NODE_OPTIONS="--debug=47977" meteorを使用して、1回の実行だけでデバッグを有効にできます。

デバッグするには、別のシェルでnode-inspectorを実行し、http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>の実行内容に関係なく、node-inspectorに移動します。

16

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. 'debugger;'を追加しますデバッグするコード内(個人的にはこの方法を好む)
  3. コンソールで流星を実行する
  4. eclipseでnode.jsにアタッチ(V8ツール、localhost:5858にアタッチ)
  5. 実行、デバッガーがヒットするのを待つ

meteorアプリフォルダーでmeteorを起動すると、コンソールに「ポート5858でリッスンしているデバッガー」と表示されます。

10
Mason Zhang

Meteor 1.0.3.1(Sergey.Simonchik回答の更新)

meteor run --debug-port=<port-number>でサーバーを起動します

ブラウザでhttp://localhost:6222/debug?port=<port-number>を指定します

ここで、<port-number>は指定したポートです。

コードで、ブレークポイントを設定する場所にdebugger;を追加します。

debugger;が呼び出される場所に応じて、インスペクターを開いた状態で、クライアントまたはサーバーのブラウザーウィンドウが破損します。

10
ferndopolis

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

これは、ローカルの流星アプリのサーバー側でそれをどうやって管理したかです:

meteor debug

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

Open Chrome指定したアドレスに。インストールする必要があるかもしれません https:// github .com/node-inspector/node-inspector (Meteorにバンドルされているかもしれませんか?わかりません)

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

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

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

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

7
Sabrina Leggett

Meteor 1.0.2の時点で、おそらくサーバー側のデバッグに最適な方法は、新しい組み込みシェルを直接使用することです。実行中のサーバーでmeteor Shell。詳細はこちら: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-Shell

6
Christian Fritz

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

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

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

5
Nachiket

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

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

4
broth-eu

流星1.3.5.2の場合、実行

meteor debug --debug-port 5858 + n nはゼロ以外の数値です。これにより、ノードインスペクターは8080 + nをWebポートとして使用します。

4
user7378851

私の問題を解決するインスペクターは、meteorサーバーコンソールです。ここに私がそれをインストールするために従ったプロセスがあります:

  1. プロジェクトフォルダーで、スマートパッケージserver-eval

    mrt add server-eval
    

    Meteor 1.0の場合:

    meteor add gandev:server-eval
    
  2. 流星を再起動します。

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

    enter image description here

ノードインスペクターと比較して、出力がより明確になっています。

3
juanpastas

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

Windowsでテストしましたが、構成は簡単でした。 my answer を参照してください。

3
Dan Dascalescu

nodeJSの公式デバッガー を使用する場合は、NODE_OPTIONS='--debug' meteorその後(別のシェルで)node debug localhost:5858

2
Tomas Romero