9

どうでも。これがうまくいかなかった理由:私はそうするのを忘れたmeteor resetのでdebugger、やめる機会がありませんでした。やった!

詳細:関連する質問に対するMason Changの回答のメソッドを使用していますが、kill -s USR1 [proc_id](スクリプトは表示されましたが、startup()関数で停止できませんでした)。また、隕石を使用しています。

Meteorサーバー側(つまり、under )でノードインスペクターを使用してMeteor.startup(function())コードをデバッグしようとしています。この質問を読み、変更するための回答に従いましたが、どういうわけか、 Chromeのスクリプトセクションに起動機能が表示されません。/serverrun.js

ここでコードを確認し、ブレークポイントを設定してそれらのポイントで停止するにはどうすればよいですか?ところで、Meteor_debug()は、stdout、stderr、またはノードインスペクターのブラウザーコンソールに何も出力しません。また、console.log()も役に立ちませんでした。Meteorサーバー側でロギングを有効にする方法は?

それが重要な場合、私はauthブランチにいます。

ここでのコードは非常に単純です(/server/bootstrap.js):

Meteor.startup(function () {
 if (Logs.find().count() === 0) {
  var data = [/*...some data...*/];
  var timestamp = (new Date()).getTime();
  Meteor._debug("timestamp: "+timestamp+", data.len: " + data.length);
  debugger;
  for (var i = 0; i < data.length; i++) {
    data[i].timestamp = timestamp++;
    var entry_id = Logs.insert(data[i]);
    Meteor._debug("entry_id: "+ entry_id);
  }
 }
});
4

2 に答える 2

10

これを行う方法がわかったので、自分の質問に答えて、この情報をここに(詳細に)保持できるようにします:(これは、この質問に対するMason Changの回答に基づいています)。

  1. 流星の実行を停止します。
  2. 編集/usr/lib/meteor/app/meteor/run.js(または対応run.jsする隕石によってインストールされたHOME//.meteorite/meteors/meteor/meteor/[LONG_HEX_CODE]/app/meteor):

    [path.join(bundle_path, 'main.js'), '--keepalive']

    ['--debug-brk', path.join(bundle_path, 'main.js'), '--keepalive']
    //--debug-brkに変更すると、最初の行で新しいスレッドが中断されます。
  3. debuggerサーバーコードにブレークポイントとしてステートメントを追加します。
  4. node-inspector &サーバーターミナルで実行します。(グーグル「ノードインスペクター」でインストールします。)
  5. 流星を実行します。(クライアントウィンドウが開いていない場合、サーバースレッドがまだないため、デバッガーは接続されません。)
  6. クライアントブラウザウィンドウを更新します。(最初の行で中断し、に接続されるサーバースレッドを開始しますnode-inspector。)
  7. [SERVER:8080]でブラウザウィンドウを開きます。サーバーコードは最初の行(の)で停止しmain.jsます[PROJECT_DIR]/.meteor/local/build
  8. デバッガブラウザウィンドウの[実行]ボタンを押します。ステートメントの場所によっては、ブレークポイントdebuggerまで実行するために、クライアントブラウザーウィンドウでいくつかのトリガーアクションを実行する必要がある場合があります。debugger([実行]ボタンを押すのに時間がかかりすぎると、クライアントウィンドウがタイムアウトし、再度更新する必要があることに注意してください。)
  9. これで、サーバーデバッガウィンドウで通常のデバッグ作業を実行できます。ステップスルー、変数の監視、コンソールでの実行、スタックの確認などです。

編集:サーバー側でのログ記録には、Meteor._debug()とconsole.log()のいずれかを使用できます。これらは、実行しているターミナルに表示されますmeteor。クライアント側では、これらのロギングステートメントはブラウザの開発者のコ​​ンソールに出力されます。ツール。

于 2012-09-20T07:22:01.407 に答える
3

MacOSXでは、Chromeで使用できます。

NODE_OPTIONS="--debug-brk" meteor

そして別のターミナルで

node-inspector --debug-port=5858 --web-port=12345

次に、Chromeを127.0.0.1:12345/debug?port=5858に接続します

それ以外の場合、Webstormを使用する場合は、Node.jsリモートデバッグ構成を作成して実行します。

名前:流星
ホスト:127.0.0.1
ポート5858

サーバーが起動したら、Meteorをロードするために実行を押してから、サーバーコンソールからデバッグするために一時停止する必要があることに注意してください。

于 2013-10-17T23:01:51.963 に答える