为什么不会将Angular日志记录到Firebug控制台

时间:2015-10-21 13:19:30

标签: javascript angularjs console firebug

我的codebase / dev环境在过去一周或两周的某个时刻出现了以下问题:

我的javascript在Angular的控制范围内引发的任何错误都不会记录到Firebug控制台。

============================

详情和调查:

我已尝试以下两种方法进行测试:

var x;
var y = x.test();

throw new Error('test');

我希望期望这两者都应该以基本相同的方式运行:JS停止执行并且控制台打印错误消息。 在我测试的所有情况下,这两个的行为相同,所以我只使用下面的throw示例。

如果我只是在页面上包含一个Angular脚本的开头(即.js文件,它恰好使用了角度,并且在<script>标签中。然后我 DO 得到我的错误。 e.g。

var app = angular.module("AbiApp", []);

console.log('test1');       // I see this.
throw new Error('test2');   // I DO see this.
console.log('test3');       // I don't see this. (as expected)

app.controller('HomeController', ['$scope', function ($scope) {
});

如果我在Angular代码中的回调中出错(即在Angular的正常控制范围内某处;在某处,我必须添加$ apply()有更改立即更新)然后,再次, DO 在相关点获取我的错误。 e.g。

var app = angular.module("AbiApp", []);

app.controller('HomeController', ['$scope', function ($scope) {
    // We're using SignalR
    $.connection.hub.start().done(function () {
        console.log('test1');       // I see this.
        throw new Error('test2');   // I DO see this.
        console.log('test3');       // I don't see this. (as expected)
    });
});

但是如果我在Angular的代码中抛出我的错误(例如在控制器的定义函数的顶部)或者我故意错误拼写Angular对象的一个​​依赖项。然后我不要在控制台上出现任何错误,但JS DOES 停止执行。 e.g。

app.controller('HomeController', ['$scope', function ($scope) {
    console.log('test1');       // I see this.
    throw new Error('test2');   // I don't see this. :(
    console.log('test3');       // I don't see this.
});

app.controller('HomeController', ['$scpe', function ($scope) {
                     //            *****         No error thrown.
    console.log('test1');       // I don't see this.
});

如果我在Chrome中重复,那么我会收到所有错误。 如果我禁用Firebug并打开Firefox控制台,那么我会收到所有错误。

所以我得出结论,Angular已经决定它不喜欢我的Firebug控制台,因此除非我直接调用console.log(),否则它不会记录到它。 WTF?

我试过了:

  • 几个星期前将我的代码库回滚到提交,当时我90%确定它一切正常。
  • 重启Firefox。
  • 重新启动计算机。
  • 重新安装Firebug。

在任何这些情况下症状都没有变化。

1 个答案:

答案 0 :(得分:1)

这一点都不令人满意,但我通过工厂重置Firebug解决了这个问题。

Firebug FAQ在“How do I reset all Firebug options”上有特定条目:
萤火虫菜单&gt;选项&gt;重置所有Firebug选项

现在我在所有地方都有错误。

如果有人能够猜测我可能会遇到什么样的设置,那我就会听错了!