【发布时间】:2013-04-10 11:30:20
【问题描述】:
我正在使用 Node.js 和 ExpressJS 开发一个应用程序,我是这个环境的初学者。我有在控制台中记录全部或部分res.locals 的内容以进行调试的基本需求。
我试过了:
var foo_route = function(req, res){
var foo_data = [];
for (var i = 0; i < data.response.foo.length; i++) {
// Here complex data management, not interesting in our case
foo_data = // Bla bla ...
// OK. This displays my object content
console.log(foo_data);
}
// Seems because my misunderstanding of JS scopes, foo_data is still == []
res.locals.data = foo_data;
// Nothing. Both of these two solutions display nothing
console.log(res.locals.data);
console.log(JSON.stringify(res.locals.data, null, 2));
我正在寻找一种Perl's Data::Dumper,但似乎我在某处错过了重点,因为它应该是一项非常基本的任务......
编辑:我知道这可能不是特定的 ExpressJS 或 Node.js 问题,而是 JS vars 范围问题...
【问题讨论】:
-
如果
console.log(res.locals.data);显示注释,则它必须为空/未定义。我们可以看到更多代码吗?你在哪里做可能很重要。 -
@UpTheCreek,是的,你是对的。我的问题似乎更多地与变量范围有关,不是吗?我已经编辑了示例代码。
-
我认为您确定
foo_data值的方式实际上非常有趣,因为这可能是您的console.log为空的原因。
标签: javascript node.js debugging express data-dumper