2012-03-06 56 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