我已经设置了一个可行的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,并且已经完成了一些步骤。
知道为什么会这样吗?
提前致谢。
答案 0 :(得分:2)
这是节点0.12。* https://github.com/joyent/node/issues/25266
的已知问题因此,作为一种解决方法,您可以使用debugger
语句或切换到iojs以进行调试。
我还建议你使用NI 0.11.0。实现了网络调试。