Javascript 难以在节点检查器中设置断点

Javascript 难以在节点检查器中设置断点,javascript,node.js,debugging,express,node-inspector,Javascript,Node.js,Debugging,Express,Node Inspector,我已经设置了一个可以工作的web应用程序,现在我想学习如何在不使用console.log的情况下正确调试它。我已经通过Node debug server.js(主脚本文件)安装并运行了Node Inspector,我想使用并检查在以下post函数中为示例设置断点时发生的情况 .post('/login', function (req, res){ var user = { username: req.body.username, password: has

我已经设置了一个可以工作的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 inspector工作得很好,我对它的设计很熟悉,因为使用GoogleChrome开发工具进行基本JavaScript调试(jQuery等)已经有一段时间了。在我尝试登录应用程序之前,一切看起来都很好。它没有打断示例“var user”行,而是简单地在某种setImmediate函数中跳入“timer.js”文件。即使当我试图跳转时,我也从未达到我希望看到post函数在req、res变量等中包含什么的临界点

我使用的是NodeJS v0.12.2和node inspector 0.10.0

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

我不知道该怎么做,也不知道如何将一个简单的if语句断点放在声明的任何地方。它只是简单地转到timers.js,完成了几步

知道为什么会这样吗


提前感谢。

这是节点0.12的已知问题。*

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


我还建议您使用NI0.11.0。已经实现了网络调试。

这不会回答您的问题,但您应该查看webstorm。这是Node.js的完整IDE,使调试变得非常简单。它可以免费下载30天,trialI以前也研究过,但仍然使用IDE进行调试有点太多了。谢谢你的建议。也许chrome调试器被搞错了,因为它是一个多行语句?您可以尝试将断点放在
db.findOne
行上,或者尝试放置
调试器语句,只是为了查看是否有任何东西在工作。我尝试在db.findOne中添加调试器,但仍然出现相同的错误。它只是在timer.js中的某个地方中断,更奇怪的是,在我删除以前创建的断点后,它仍然在timers.js中的某个地方中断,尽管里面绝对没有一个断点(或“debugger;”)。同样奇怪的东西,但我的断点一直在events.js中呼吸,从未到达我的断点。找到解决方案了吗?没有,调试器语句没有帮助,仍然将我抛出event.js而不是我的调试器断点。回到console.log调试看来,呵呵,很高兴,更新到最新的节点和inspector(0.12.5和0.11.1)似乎解决了这个问题。是的,我昨天在NI 0.11.1中特别修复了它