【问题标题】:Cannot get node-inspector working无法让节点检查器工作
【发布时间】:2014-10-24 08:43:06
【问题描述】:

我有一个基本的 express 应用程序,我正在尝试调试,但我无法让节点检查器在 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

我得到了相同的结果,除了节点检查器没有在第一行停止

【问题讨论】:

    标签: node.js express node-inspector


    【解决方案1】:

    调试检查器打开并在第一行停止...

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

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

    为了确保node-inspector 不会停在任何一行,你应该怎么做:

    • 在您调用app.listen 的行处设置断点,或者;
    • 一个更极端的解决方案:在主文件的每一行放置一个断点。

    【讨论】:

    • 好吧这种作品。我有一个路由文件(从主 server.js 文件引用),其中包含: router.get('/api/projects', projects.getProjects);如果我在那条线上放置断点,即使这条路线被击中,也不会发生任何事情。同样,如果我在主 server.js 文件的任何位置添加断点,则不会发生任何事情。但是,如果我在项目控制器 (projects.getProjects) 中的 getProjects 函数中添加断点,它现在会遇到断点并正确暂停调试器。下一个问题是为什么前两个文件中的断点没有被命中(server.js -> routes.js?)
    • 进一步思考会不会是一旦加载了主 server.js 文件,它就不会在服务器启动后再次执行该代码??
    • 这完全取决于你的应用程序是如何编写的,但是 IMO,现在是另一个问题。我的建议是:问另一个问题,解释有关应用程序流程的问题,并发布您提到的这三个文件的代码。我很乐意与您一起找出问题所在。实际问题(关于节点检查器)现在已经解决了。
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多