javascript - 为什么 Angular 无法登录到 Firebug 控制台

标签 javascript angularjs console firebug

我的代码库/开发环境在过去一两周的某个时候出现了以下问题:

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

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

详细信息和调查:

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

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

throw new Error('test');

期望这两者的行为本质上应该是相同的:JS 停止执行并且控制台打印一条错误消息。 在我的测试中的所有情况下,这两个表现相同,因此我将仅使用下面的抛出示例。

如果我只是在页面上包含的 Angular 脚本的开头抛出(即 .js 文件,它恰好使用了 Angular,并且位于 <script> 标记中。那么我 DO 得到我的错误。 例如

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() 才能立即更新更改),那么,再次,我确实在相关点得到了我的错误。 例如

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 的代码中(例如,在 Controller 的定义函数顶部),或者如果我故意拼写错误 Angular 对象的依赖项之一。然后我没有在控制台上收到任何错误,但 JS 确实停止执行。 例如

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() 。搞什么?

我已经尝试过:

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

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

最佳答案

这根本不令人满意,但我通过恢复出厂设置 Firebug 解决了问题。

Firebug FAQ在“How do I reset all Firebug options ”上有特定条目:
Firebug 菜单 > 选项 > 重置所有 Firebug 选项

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

如果有人能够猜测我进入错误状态的可能是什么设置,我很想听听!

关于javascript - 为什么 Angular 无法登录到 Firebug 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33260456/

相关文章:

swift - 如何打印/转储 NSObject?

java - 程序完成后如何防止控制台关闭?

javascript - 为什么我的单选按钮不接受 javascript 文件中的 if else 语句?

Angularjs,Ionic Framework - 导航回模态的选项

javascript - 如何在 Angular JS 中动态添加输入表单

Java:如何轻松地从控制台输入中获取值

javascript - 将模板字符串传递到 array.filter 操作中

javascript - 如何在 for 循环中 getElementsByTagName

javascript - 从 json 数组获取属性列表的最佳方法是什么

javascript - 在 Angularjs 中加载外部模块(第三方库)