9

沒關係。之所以沒有成功:我忘了meteor reset,所以debugger沒有機會停下來。咄!如何在Meteor的服務器端調試並記錄自己的代碼?

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

我試圖調試在流星服務器端Meteor.startup(function())代碼(即,/server下)淋巴結檢查,我已閱讀本question,並按照答案改變run.js,但不知何故,我自己的啓動腳本函數不會顯示在Chrome的腳本部分。

我怎麼在這裏看到我的代碼,並設置斷點,並停止在這些點?順便說一句,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); 
    } 
} 
}); 

回答

10

現在我知道如何做到這一點,我會回答我的問題,使我們能夠保持該信息(以細節):(這是基於梅森張對此question的回答。)

  1. 停止流星執行。
  2. 編輯/usr/lib/meteor/app/meteor/run.js(或由隕石安裝了相應run.jsHOME//.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']
    // - 調試-BRK使得在第一行中的新線程中斷;
  3. 添加debugger語句作爲服務器代碼斷點;在服務器終端
  4. 運行node-inspector &。 (谷歌「節點檢查員」來安裝它。)
  5. 運行流星; (這不會有調試器附加,因爲沒有服務器線程的是,如果你沒有客戶端窗口中打開。)
  6. 刷新客戶端瀏覽器窗口; (啓動服務器線程將在第一行中斷,並且連接到node-inspector。)
  7. 在[SERVER:8080]處打開瀏覽器窗口,您的服務器代碼停在第一行(中的main.js);
  8. 在調試器瀏覽器窗口中點擊RUN按鈕;取決於您的debugger語句的位置,您可能必須在客戶端瀏覽器窗口中執行一些觸發操作才能運行到debugger斷點。 (請注意,如果等待時間過長,點擊運行按鈕,您的客戶端窗口可能會超時,你必須再次刷新。)
  9. 現在你可以做平常調試東西在服務器調試窗口:步,觀察變量,在控制檯中執行,查看堆棧等。

編輯:用於記錄在服務器端,您可以使用Meteor._debug()和執行console.log(),他們會在你運行meteor終端顯示出來。在客戶端,這些日誌語句將輸出到瀏覽器的開發者控制檯。工具。

+0

太棒了,謝謝! – huyz

+0

這是否仍然適用,因爲Meteor現在支持'--debug'和'--debug-brk'? – Brandon

+3

@Brandon:現在事情變得容易多了。請參閱[非官方流星常見問題解答](https://github.com/oortcloud/unofficial-meteor-faq/blob/master/README.md#how-do-i-debug-my-meteor-app)(謝謝到Kasima Tharnpipitchai)。希望Qichao能夠更新答案。 –

3

MacOSX上,你可以使用Chrome使用:

NODE_OPTIONS="--debug-brk" meteor 

而在另一端

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

鉻然後連接到127.0.0.1:12345/debug?port=5858

否則,使用Webstorm,只需創建一個Node.js遠程調試配置並運行它:

 
Name : Meteor 
Host : 127.0.0.1 
Port 5858 

請注意,一旦服務器啓動後,您需要按運行才能加載Meteor,然後暫停以便從服務器控制檯進行調試。

相關問題