我正在调试Intellij中的NodeJS应用程序。我有一个看起来如下的方法:IntelliJ NodeJS调试回调范围参考错误
function(connection) {
connection.on('error', function(error) {
console.log('there is an error'); // breakpoint is on this line
});
}
当断点被击中,connection
没有定义,并把connection
在计算表达式窗口收益率“的ReferenceError:不定义的连接。”
这在我看来,connection
被释放,因为它没有被回调中使用,但我调试应用程序,所以我怎样才能使它不被释放,短期将行localConnection = connection
(这不工作)。
再举一例:
var foo = (function() {
var a = 'some value';
this.bar = function() {
console.log('bar'); // breakpoint is here
};
this.bar();
})();
这里,a
是来自调试器无法访问。
EDIT:
为了阐明第二实例中,a
是私有的foo
外部声明的方法,而不是其他。案例分析:
var foo = (function() {
var a = 'Some value';
this.bar = function() {
console.log('a: ' + a); // breakpoint is here
};
this.bar();
})();
这个例子可以打印“答:有些价值,”这表明a
应该是行内访问。事实上,仅仅通过将其添加到控制台日志中,它可以在该行保持可访问性,这表明它之前的不可访问性是由于垃圾收集或引用计数造成的,在调试环境中,我希望不太严格,因为我希望能够在调试时保持查看代码中不一定使用的变量值的能力。
这同样适用于第一个例子。在代码中使用connection
时,它会暴露给调试器,但我试图让它保持暴露,即使没有代码使用情况。我怎么做?我非常乐观,Node有一个运行时标志来实现这一点。
谢谢!恐怕情况并非如此。请参阅我的编辑。 – arik