很难在Node-Inspector

时间:2015-05-06 19:32:52

标签: 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: hash(req.body.password)
    };
    db.findOne(user, function (err, data) {
        if (data) {
            req.session.userId = data.id;
            res.redirect('/');
        } else {
            res.redirect('/login');
        }
    });
})

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

我正在使用NodeJS v0.12.2和node-inspector 0.10.0。

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

我不知道该做什么或如何在任何地方断言一个简单的if语句。它只是简单地转向了一些timers.js,并且已经完成了一些步骤。

知道为什么会这样吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

这是节点0.12。* https://github.com/joyent/node/issues/25266

的已知问题

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

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