簡體   English   中英

如何在Meteor的服務器端調試和記錄自己的代碼?

[英]How to debug and log own code on the server side of Meteor?

沒關系。 這不起作用的原因:我忘了meteor reset所以debugger沒有機會停止。 咄!

更多信息:我在Mason Chang的回答中使用了相關問題的方法,而不是kill -s USR1 [proc_id] (我可以看到腳本,但無法在startup()函數中停止)。 另外,我正在使用隕石。

我試圖用節點檢查器調試Meteor服務器端的Meteor.startup(function())代碼(例如,在/server ),我已經閱讀了這個問題 ,並按照更改run.js的答案,但不知何故,我自己的啟動功能腳本沒有出現在Chrome的腳本部分。

如何在此處查看我的代碼並設置斷點並停在這些點? 順便說一下,Meteor_debug()不會向stdout,stderr或node-inspector瀏覽器控制台輸出任何內容。 我也試過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);
  }
 }
});

現在我知道如何做到這一點,我將回答我自己的問題,以便我們可以在這里保留這些信息(詳細信息):(這是基於Mason Chang對這個問題的回答。)

  1. 停止流星執行。
  2. 編輯/usr/lib/meteor/app/meteor/run.js (或由隕石在HOME//.meteorite/meteors/meteor/meteor/[LONG_HEX_CODE]/app/meteor安裝的相應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 &在服務器終端中。 (google“node-inspector”來安裝它。)
  5. 跑流星; (如果沒有打開客戶端窗口,則不會附加調試器,因為還沒有服務器線程。)
  6. 刷新客戶端瀏覽窗口; (啟動將在第一行中斷的服務器線程,並附加到node-inspector 。)
  7. 在[SERVER:8080]打開瀏覽器窗口,服務器代碼在第一行停止( [PROJECT_DIR]/.meteor/local/build main.js [PROJECT_DIR]/.meteor/local/build main.js );
  8. 點擊調試器瀏覽器窗口上的RUN按鈕; 根據debugger語句的位置,您可能必須在客戶端瀏覽器窗口中執行一些觸發操作才能運行到debugger斷點。 (請注意,如果等待太長時間按下RUN按鈕,則客戶端窗口可能會超時,您必須再次刷新。)
  9. 現在,您可以在服務器調試器窗口中執行常用的調試工作:逐步執行,觀察變量,在控制台中執行,查看堆棧等。

編輯 :對於在服務器端登錄,您可以使用Meteor._debug()和console.log(),它們將顯示在運行meteor的終端中。 在客戶端,這些日志記錄語句將輸出到瀏覽器開發人員的控制台。 工具。

在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遠程調試配置並運行它:

Name : Meteor
Host : 127.0.0.1
Port 5858

請注意,一旦服務器啟動,您需要按下運行以便加載Meteor,然后暫停以便從服務器控制台進行調試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM