我正在评估node.js
的Geddy MVC框架,我看到一个奇怪的问题 - 调试时没有遇到任何断点。
我正在使用WebStorm在调试模式下启动node.js
。
我不知道如何使用CLI命令让Geddy在调试模式下启动,所以我使用的bootstrapper文件如下所示:
console.log("Starting server...")
var geddy = require("geddy/bin/cli")
console.log("Server started.")
我在所有三行上都设置了一个断点,只有最后一个console.log
被命中,所以至少我知道断点和调试工作正常。
Geddy内部require()
是我的控制员,他们也在多个地点设置了断点。这些永远不会受到影响,但控制器可以正常工作,并且HTTP请求也可以正常提供。
有没有理由为什么断点不会被Geddy击中?还有什么我可以做的吗?
答案 0 :(得分:3)
有一个Debugging WikiPage,其中包含有关如何调试geddy的一些信息。
答案 1 :(得分:1)
我无法验证这一点,但我认为问题是由于cluster
产生新进程但调试器不知道它们。我还没有找到一种方法将调试器连接到新进程,我甚至不确定它们是否可以在打开调试端口的情况下启动。
Geddy使用cluster
因此它继承了这个问题。
该主题提到了一个可能的解决方案: (How do I enable --debug for node.js when running GeddyJS)但这对我没有帮助。
答案 2 :(得分:1)
Geddy目前不支持调试,但我们希望将其添加为功能。
答案 3 :(得分: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并将其设置为“development”或“test”(如果要运行测试)。
选项2 直接调用geddy客户端
@MiguelMadero在评论中提到了这个想法。设置WS / IJ以运行以下
path/to/geddy/bin/cli.js