誰もがサーバーサイドコードをデバッグするための良い方法を知っていますか? Node.jsデバッグを有効にしてからノードインスペクターを使用しようとしましたが、コードが表示されません。
最終的にconsole.logを使用しますが、これは非常に非効率的です。
更新:Linuxマシンで次の手順が機能することがわかりました
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でkill -s USR1を送信する必要があります
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マシンでこれを確認できますか?
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
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
に移動します。
Node.jsをデバッグモードで起動するには、次のようにしました。
前
nodeOptions.Push(path.join(options.bundlePath, 'main.js'));
加える
nodeOptions.Push('--debug');
デバッガーEclipseをアタッチするための追加の実用的な手順は次のとおりです。
meteorアプリフォルダーでmeteorを起動すると、コンソールに「ポート5858でリッスンしているデバッガー」と表示されます。
Meteor 1.0.3.1(Sergey.Simonchik回答の更新)
meteor run --debug-port=<port-number>
でサーバーを起動します
ブラウザでhttp://localhost:6222/debug?port=<port-number>
を指定します
ここで、<port-number>
は指定したポートです。
コードで、ブレークポイントを設定する場所にdebugger;
を追加します。
debugger;
が呼び出される場所に応じて、インスペクターを開いた状態で、クライアントまたはサーバーのブラウザーウィンドウが破損します。
GUIを介してブレークポイントを設定するのが好きです。このように、アプリからデバッグコードを削除することを覚えておく必要はありません。
これは、ローカルの流星アプリのサーバー側でそれをどうやって管理したかです:
meteor debug
この方法でアプリを起動します。
Open Chrome指定したアドレスに。インストールする必要があるかもしれません https:// github .com/node-inspector/node-inspector (Meteorにバンドルされているかもしれませんか?わかりません)
奇妙な内部流星コードが表示されます(作成したアプリコードではありません)。 playを押してコードを実行します。このコードは、サーバーを起動して接続をリッスンするだけです。
再生ボタンを押すと、デバッガーフォルダー構造に "app"と呼ばれる新しいディレクトリが表示されます。流星プロジェクトファイルがあります。必要な行にブレークポイントを設定します。
アプリのローカルアドレスを開きます。これによりサーバー側のコードが実行され、ブレークポイントにヒットできるはずです!
注:アプリを再起動するたびに、インスペクターを再度開き、このプロセスを再度実行する必要があります!
Meteor 1.0.2の時点で、おそらくサーバー側のデバッグに最適な方法は、新しい組み込みシェルを直接使用することです。実行中のサーバーでmeteor Shell
。詳細はこちら: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-Shell
なぜあなたにとってうまくいかなかったのかはわかりません。
コンソール(Mac)で次の手順を実行して使用できます。
$ ps
$ kill -s USR1 *meteor_node_process_id*
$ node-inspector &
上記の手順は https://github.com/dannycoates/node-inspector に記載されています。実行中のノードプロセスにノードインスペクターを接続するためのものです。
meteor-inspectorという小さな流星パッケージを作成しました。これにより、流星アプリをデバッグするためのノードインスペクタの使用が簡単になりました。ノードインスペクターのライフサイクルを内部で管理するため、一部のファイルが変更された後、ユーザーが手動でデバッガーを再起動する必要はありません。
詳細および具体的な使用手順については、 https://github.com/broth-eu/meteor-inspector をご覧ください。
流星1.3.5.2の場合、実行
meteor debug --debug-port 5858 + n nはゼロ以外の数値です。これにより、ノードインスペクターは8080 + nをWebポートとして使用します。
私の問題を解決するインスペクターは、meteorサーバーコンソールです。ここに私がそれをインストールするために従ったプロセスがあります:
プロジェクトフォルダーで、スマートパッケージserver-eval
:
mrt add server-eval
Meteor 1.0の場合:
meteor add gandev:server-eval
流星を再起動します。
crx
Chrome=拡張ファイルを here からダウンロードします。crx
ファイルを拡張機能ページにドラッグします。Webインスペクターをチェックして、サーバー側のコードを評価します。
ノードインスペクターと比較して、出力がより明確になっています。
nodeJSの公式デバッガー を使用する場合は、NODE_OPTIONS='--debug' meteor
その後(別のシェルで)node debug localhost:5858
。