2012-03-06 64 views
6

我正在評估Geddy MVC框架node.js,我看到一個奇怪的問題 - 調試時沒有任何斷點出現。Geddy沒有發生斷點

我正在使用WebStorm以調試模式啓動node.js

我不知道如何使使用CLI命令,所以我有我使用看起來像這樣的引導程序文件在調試模式下Geddy開始:

console.log("Starting server...") 
var geddy = require("geddy/bin/cli") 
console.log("Server started.") 

我設置一個斷點在所有三行只最後的console.log被擊中,所以至少我知道斷點和調試工作正常。

Geddy內部require()的我的控制器誰也設置了幾個位置的斷點。這些都不會被打到,但是控制器可以正常工作,並且HTTP請求也可以正常使用。

爲什麼在Geddy中不會觸發斷點?我還能做些什麼嗎?

+0

也許嘗試在源代碼中添加'debugger;'來代替'console.log'。 (或之前)這是否會改變你的任何事情? – 2012-03-06 23:10:35

+0

不是。我認爲這個問題可能與Geddy內部使用'cluster'這個事實有關,它產生了新的進程,調試器沒有連接到這個進程。我試圖證實這一點。 – 2012-03-07 19:52:27

+0

我正在經歷相同的...任何更新偶然? – ewindsor 2012-03-16 00:18:12

回答

1

我一直無法驗證這一點,但我認爲這個問題是由於cluster產生新進程的事實,但調試器不知道它們。我還沒有找到一種方法來將調試器附加到新的進程,我甚至不知道它們是否可以打開調試端口來啓動。

Geddy使用cluster所以它繼承了這個問題。

此線程提到了一個可能的解決方案: (How do I enable --debug for node.js when running GeddyJS)但這並沒有幫助我。

1

Geddy目前不支持調試,但我們希望將其添加爲一項功能。

+0

這個答案現在已經過時了,請查看@ miguel上面的答案。 – Techwraith 2012-12-11 21:50:28

1

爲了回答專門爲Jetbrains的WebStorm或的IntelliJ的問題(與Node.js的插件)調試:

總之,建立你的應用程序,如果你打算在Heroku或Nodejitsu部署。

的package.json

{ 
    "name": "geddy_todo", 
    "version": "0.0.1", 
    "dependencies": { 
    "geddy": "0.6.x" 
    }, 
    "engines": { 
    "node": "0.8.x", 
    "npm": "1.1.x" 
    } 
} 

接下來你有兩個選擇

選項1.創建一個運行geddy的app.js。

app.js

var geddy = require('geddy'); 

geddy.start({ 
    environment: process.env.GEDDY_ENVIRONMENT || 'production' 
}); 

在WebStorm /的IntelliJ,在你運行/調試配置爲Node.js的應用一定要加一個環境變量GEDDY_ENVIRONMENT並將其設置爲「發展」或'測試'如果你想運行你的測試。

選項2調用geddy客戶端直接

@MiguelMadero提到這個想法的意見。設置你的WS/IJ運行以下內容:

path/to/geddy/bin/cli.js 
+0

有沒有必要這樣做,簡單而不是運行geddy來啓動您運行節點路徑/到/ geddy/bin/cli.js並設置通常的調試標誌。 – 2013-03-06 05:13:50

+0

但是,它爲什麼讓人們投票呢? – 2013-03-25 20:10:06

+1

我沒有投票。我認爲這是一個很好的答案。 – 2013-03-26 16:55:33