[英]Meteor: Debug on server side
有誰知道調試服務器端代碼的好方法? 我嘗試啟用Node.js調試,然后使用node-inspector,但是它不顯示任何代碼。
我最終使用console.log,但這效率很低。
更新:我發現以下過程可在我的Linux機器上運行:
當您運行Meteor時,它將產生兩個進程
進程1:/ usr / lib / meteor / bin / node /usr/lib/meteor/app/meteor/meteor.js
進程2:/ usr / lib / meteor / bin / node /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js --keepalive
您需要在process2上發送kill -s USR1
運行node-inspector,您可以看到服務器代碼
第一次嘗試時,我將/ usr / lib / meteor / bin / meteor中的流星啟動腳本的最后一行修改為
exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "$@"
並在命令提示符下運行NODE_DEBUG=--debug meteor
。 這僅將--debug標志放在process1上,因此我只能在node-inspector上看到流星文件,而找不到我的代碼。
有人可以在Windows和Mac計算機上檢查嗎?
在流星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
流星應用程序是Node.js應用程序。 使用meteor [run]
命令運行Meteor應用程序時,可以配置NODE_OPTIONS
環境變量以在調試模式下啟動node
。
NODE_OPTIONS
環境變量值的示例:
--debug
--debug=47977
指定端口 --debug-brk
在第一條語句上中斷 --debug-brk=5858
指定端口並在第一條語句上中斷 如果export NODE_OPTIONS=--debug
,則從同一外殼運行的所有meteor
命令都將繼承環境變量。 或者,您可以使用NODE_OPTIONS="--debug=47977" meteor
啟用一次NODE_OPTIONS="--debug=47977" meteor
。
要進行調試,請在其他外殼程序中運行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的其他實際步驟:
當您在流星應用程序文件夾中啟動流星時,您會在控制台中看到“ 調試器正在偵聽端口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
以這種方式啟動您的應用。
將Chrome打開到它給您的地址。 您可能需要安裝https://github.com/node-inspector/node-inspector (它可能現在與Meteor捆綁在一起?不確定)
您會看到一些奇怪的內部流星代碼(而不是您編寫的應用程序代碼)。 按播放以運行代碼。 此代碼只是啟動您的服務器以偵聽連接。
只有在您按下play之后,您才會在調試器文件夾結構中看到一個名為“ app”的新目錄。 其中有您的流星項目文件。 在所需的行中設置一個斷點。
打開您的應用的本地地址 。 這將運行您的服務器端代碼,您應該可以達到斷點!
注意:您必須在每次重新啟動應用程序時重新打開檢查器並再次執行此過程!
從Meteor 1.0.2開始,服務器端調試的最佳方法可能是直接通過新的內置shell:運行服務器時運行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上提到了上述步驟。 用於將node-inspector附加到正在運行的節點進程。
我編寫了一個名為meteor-inspector的小型流星程序包,它簡化了使用節點檢查器調試流星應用程序的過程。 它在內部管理節點檢查器的生命周期,因此,用戶無需在某些文件更改后手動重新啟動調試器。
有關更多詳細信息和具體用法說明,請參見https://github.com/broth-eu/meteor-inspector 。
對於流星1.3.5.2,運行
流星調試--debug-port 5858 + nn是一個非零數字,這將導致節點檢查器將8080 + n用作Web端口。
流星服務器控制台是解決我的問題的檢查器。 這是我遵循的安裝過程:
在您的項目文件夾中,添加智能軟件包server-eval
:
mrt add server-eval
對於Meteor 1.0:
meteor add gandev:server-eval
重新啟動流星。
crx
Chrome擴展文件。 crx
文件拖到擴展程序頁面。 檢查Web檢查器以評估服務器端代碼:
與node-inspector相比,我的輸出更清晰。
如果您更喜歡使用nodeJS的官方調試器 ,則可以調用NODE_OPTIONS='--debug' meteor
,然后(在另一個shell上) node debug localhost:5858
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.