2014-08-30 103 views
4

我有我试图调试一个基本明确的应用程序,但我不能让节点检查上OSX无法获取节点检查工作

正常工作

在一个终端窗口,我跑:

node --debug-brk server.js 

在另一个终端窗口,我跑:

node-inspector 

节点督察打开这里:

http://localhost:8080/debug?port=5858 

在另一个浏览器选项卡中我尝试打开这里我的网站

http://localhost:8080/ 

我得到打印到屏幕

Cannot GET/

如果我打开,而不是

http://localhost:3000 

我得到我的应用程序,因为我将其设置在server.js中

app.set('port', process.env.PORT || 3000); 

但是现在没有断点在调试器

我相信我在这里做一些愚蠢的工作,但我已经一遍又一遍地阅读文档和教程,我不能得到这个工作。

其他的事情我已经试过在一个终端窗口中运行:

node-debug server.js 

我得到同样的事情如上。调试检查员打开并停止在第一线和我在

http://localhost:8080 

网站还称

Cannot GET/

我也试过

node-debug --no-debug-brk server.js 

的我得到了相同的结果,除了节点检查中未停在第一行

回答

1

调试检查器操作ns并在第一行停止...

node-inspector开始调试应用程序时,默认情况下,它在应用程序启动过程中停止在第一行。如果您尝试在http://localhost:3000处访问您的应用程序,且调试器停在第一行,则您将永远无法到达您的断点。

在尝试任何操作之前,您必须恢复脚本执行或使用--no-debug-brk选项启动node-inspector,以防止停在第一行。

要确保node-inspector没有任何线停在所有的,你应该做的:

  • 把一个断点,你有你的电话app.listen,或行;
  • a更多极端解决方案:在您的主文件的每一行放置一个断点。
+0

好的这种作品。我有一个路由文件(从主server.js文件引用),其中包含: router.get('/ api/projects',projects.getProjects); 如果我把断点放在那条线上,即使这条路线被击中,也没有任何反应。同样,如果我在主server.js文件的任何位置添加断点,则不会发生任何事情。但是,如果我在项目控制器(projects.getProjects)中的getProjects函数中添加断点,它现在会立即触发断点并正确暂停调试器。接下来的问题是为什么前两个文件中的断点没有被命中(server.js - > routes.js?) – 2014-08-31 07:18:05

+0

在进一步的思考中,一旦加载了主server.js文件,它永远不会执行该代码服务器启动后再次? – 2014-08-31 07:24:38

+0

这一切都取决于你的应用程序的写法,但IMO,现在是另一个问题。我的建议是:提出另一个问题来解释有关应用程序流的问题,并发布您提到的三个文件的代码。我很乐意尝试找出与你有关的问题。现在解决了实际问题(关于节点检查器)。 – 2014-08-31 13:33:48