簡體   English   中英

流星:在服務器端調試

[英]Meteor: Debug on server side

有誰知道調試服務器端代碼的好方法? 我嘗試啟用Node.js調試,然后使用node-inspector,但是它不顯示任何代碼。

我最終使用console.log,但這效率很低。

更新:我發現以下過程可在我的Linux機器上運行:

  1. 當您運行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

  2. 您需要在process2上發送kill -s USR1

  3. 運行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,我是這樣進行的:

  1. 打開/usr/lib/meteor/app/meteor/run.js
  2. 之前

     nodeOptions.push(path.join(options.bundlePath, 'main.js')); 

     nodeOptions.push('--debug'); 

這是附加調試器eclipse的其他實際步驟:

  1. 在這里使用'--debug-brk'而不是'--debug',因為使用eclipse作為調試器,我更容易附加node.js。
  2. 添加“調試器”; 在您要調試的代碼中。(我個人更喜歡這種方式)
  3. 在控制台中運行流星
  4. 在eclipse中附加到node.js(V8工具,附加到localhost:5858)
  5. 運行,等待調試器被點擊

當您在流星應用程序文件夾中啟動流星時,您會在控制台中看到“ 調試器正在偵聽端口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端口。

WebStorm是為開源開發人員免費提供的功能強大的IDE,它使調試服務器端變得更加容易。

我已經在Windows上對其進行了測試,並且配置非常輕松-請參閱我的答案

流星服務器控制台是解決我的問題的檢查器。 這是我遵循的安裝過程:

  1. 在您的項目文件夾中,添加智能軟件包server-eval

     mrt add server-eval 

    對於Meteor 1.0:

     meteor add gandev:server-eval 
  2. 重新啟動流星。

  3. 此處下載crx Chrome擴展文件。
  4. 在Chrome中打開擴展程序頁面,然后將crx文件拖到擴展程序頁面。
  5. 重新啟動Chrome。
  6. 檢查Web檢查器以評估服務器端代碼:

    在此處輸入圖片說明

與node-inspector相比,我的輸出更清晰。

如果您更喜歡使用nodeJS的官方調試器 ,則可以調用NODE_OPTIONS='--debug' meteor ,然后(在另一個shell上) node debug localhost:5858

暫無
暫無

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

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