我已经设置了一个可用的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.12.*
https://github.com/joyent/node/issues/25266的已知问题
因此,作为一种解决方法,您可以使用调试器语句或切换到iojs以进行调试.
我还建议你使用NI 0.11.0.实现了网络调试.