【问题标题】:Hard to set up breakpoints in Node-Inspector难以在 Node-Inspector 中设置断点
【发布时间】:2015-07-17 03:09:45
【问题描述】:

我已经设置了一个可以运行的 Web 应用程序,现在我想学习如何在不使用 console.log 的情况下正确调试它。我已经通过 node-debug server.js(主脚本文件)设置并运行了 Node-Inspector,我想使用并检查当我为以下 post 函数中的示例设置断点时会发生什么。

.post('/login', function (req, res){
    var user = {
        username: req.body.username,
        password: hash(req.body.password)
    };
    db.findOne(user, function (err, data) {
        if (data) {
            req.session.userId = data.id;
            res.redirect('/');
        } else {
            res.redirect('/login');
        }
    });
})

Node 检查器运行良好,我熟悉它的设计,因为使用 Google Chrome 开发人员工具进行基本的 JavaScript 调试(jQuery 等)已经有一段时间了。在我尝试登录应用程序之前,一切看起来都很好。它不是插入示例“var user”行,而是简单地在某种 setImmediate 函数中跳转到“timer.js”文件中。即使当我试图跳过时,我也永远不会到达那个断点,我希望看到 post 函数在 req、res 变量等中包含什么。

我正在使用 NodeJS v0.12.2 和节点检查器 0.10.0。

我在项目中使用 body-parser、bourne、express 和 express-session 模块。也许值得一提的是,我在不同于 8080 或 5858 的端口上运行应用程序,如果可能是这种情况,我在另一个 .js 文件中也有指定的代码,因为我可以成功地断点前几行(需要)主服务器js文件。

我不知道该做什么或如何在一个简单的 if 语句中设置断点。它只是简单地进入了一些 timers.js 并完成了一些步骤。

知道为什么会这样吗?

提前致谢。

【问题讨论】:

  • 这不会回答你的问题,但你应该看看 webstorm。它是一个完整的 Node.js IDE,它使调试变得非常容易。可免费下载 30 天试用
  • 我之前研究过,但仍然使用仅用于调试的 IDE 有点太多了。谢谢你的建议。
  • 也许 chrome 调试器出错了,因为它是一个多行语句?您可以尝试将断点放在db.findOne 行,或尝试在代码中放置debugger; 语句,看看是否有任何工作。
  • 我尝试在 db.findOne 中添加调试器,但仍然出现相同的错误。它只是在 timer.js 中的某个地方中断,更奇怪的是,在我删除之前创建的断点之后,它仍然在 timers.js 中的某个地方中断,尽管里面绝对没有一个断点(或“调试器”)......
  • 同样奇怪的东西,但我在 events.js 中使用并且从未达到我的断点。找到解决办法了吗?

标签: javascript node.js debugging express node-inspector


【解决方案1】:

这是节点 0.12 的一个已知问题。* https://github.com/joyent/node/issues/25266

因此,作为一种解决方法,您可以使用debugger 语句或切换到 iojs 进行调试。

我还建议您使用 NI 0.11.0。那里实现了网络调试。

【讨论】:

  • 不,调试器语句没有帮助,仍然将我抛出 event.js 而不是我的调试器断点。回到console.log调试好像,呵呵
  • 哦,很高兴,更新到最新的节点和检查器(0.12.5 和 0.11.1)似乎可以解决问题。
  • 是的,我昨天特意在NI 0.11.1修复了
猜你喜欢
  • 1970-01-01
  • 2021-08-15
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多