6

我正在评估 Geddy MVC 框架node.js,我看到了一个奇怪的问题——调试时我的断点都没有被命中。

我正在使用 WebStormnode.js在调试模式下启动。

我不知道如何使用 CLI 命令使 Geddy 在调试模式下启动,所以我有一个我使用的引导程序文件,如下所示:

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

我在所有三行上都设置了一个断点,只有最后一行console.log被命中,所以至少我知道断点和调试工作正常。

Geddy 在内部require()是我的控制器,他们也在多个位置设置了断点。这些永远不会受到影响,但控制器确实可以正常工作,并且 HTTP 请求也可以正常服务。

在 Geddy 中断点不会被击中有什么原因吗?我还能做些什么吗?

4

4 回答 4

3

有一个Debugging WikiPage包含有关如何调试 geddy 的一些信息。

于 2012-10-16T17:47:55.647 回答
1

我无法验证这一点,但我认为问题是由于cluster产生了新进程但调试器不知道它们。我还没有找到将调试器附加到新进程的方法,我什至不确定它们是否可以在调试端口打开的情况下启动。

Geddy 使用cluster所以它继承了这个问题。

该线程提到了一个可能的解决方案:(How do I enable --debug for node.js when running GeddyJS)但这对我没有帮助。

于 2012-03-16T00:39:11.940 回答
1

Geddy 目前不支持调试,但我们很乐意将其添加为一项功能。

于 2012-04-19T23:13:32.370 回答
1

要回答专门针对 Jetbrains WebStorm 或 IntelliJ(使用 Node.js 插件)调试的问题:

简而言之,设置您的应用程序,就好像您要在 Heroku 或 Nodejitsu 上进行部署一样。

包.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。

应用程序.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 
于 2013-01-06T05:41:37.747 回答