18

编辑:这似乎与 Chrome v43 有关,我降级到 v42 并且一切正常。

编辑:我已经在 Angular 的 Github 存储库上提交了一个问题。

似乎错误是 在 angular.js 源代码中按return logFn.apply(console, args);行抛出的。12221

这是Chromium 错误的链接。

关于现在该做什么的任何提示?


我正在尝试将我的应用程序从 AngularJS v1.2 迁移到 v1.3 或 v1.4,但我正在TypeError: Illegal invocation使用 Chrome(尝试过 win、osx 和 ubuntu)。

堆栈跟踪并没有真正帮助:

TypeError: Illegal invocation
    at equals (angular.js:1034)
    at equals (angular.js:1034)
    at equals (angular.js:1034)
    at equals (angular.js:1034)
    at equals (angular.js:1034)
    at Scope.$get.Scope.$digest (angular.js:15550)
    at Scope.$get.Scope.$apply (angular.js:15824)
    at done (angular.js:10263)
    at completeRequest (angular.js:10435)
    at XMLHttpRequest.requestLoaded (angular.js:10376)

所以这似乎与 AJAX 请求有关,但我也得到:

TypeError: Illegal invocation
    at equals (angular.js:1034)
    at equals (angular.js:1034)
    at equals (angular.js:1034)
    at equals (angular.js:1034)
    at equals (angular.js:1034)
    at Scope.$get.Scope.$digest (angular.js:15550)
    at Scope.$get.Scope.$apply (angular.js:15824)
    at tick (angular.js:10983)

$interval用来更新模型类(这是一个工厂,并通过设置这个类反映在视图中$scope.client):

var runTimer = function () {
    self.timeOnline = time(self.timeSoFar);
    self.timeSoFar = Date.now() / 1000 - self.alarmTriggeredTime;
};

$interval(runTimer, 1000);

我觉得有问题$digest/$apply。我已经花了几个小时调试这个,但仍然不知道发生了什么。

任何指向进一步调试的指针都非常感谢。

4

1 回答 1

2

angular-issuechromium-bugwebkit-bug和(我什至不知道这是什么)something-Webkit-issue之间,看起来好像每个人(嗯,大多数人)都在举手. 也许我这样说是判断/完全错误的。

无论如何,我无法在window.history.back不引起 an 的情况下记录该案例,Illegal Invocation但我能够console.log.call(window, 'x')使用以下“片段:”

(function() { console.log = console.log.bind(console); }());

(直接从那里的最后一个链接中取出,谢谢布赖恩!

只需将它放在 HTML 文档的顶部/您想要的任何地方(我猜)。


我非常好奇如果你运行那个@Ignas 会发生什么。我似乎无法通过工厂绑定$scope和运行$interval您的工厂来复制您提出的问题。

很想看看它是否有任何效果(虽然,不是功能性的,而是装饰性的,我想)。

边注; 我是新手,我的同事刚刚告诉我,console.log.call(window) 确实会抛出非法调用错误,所以这不是问题。仍然好奇这是否会对logFnAngular 内部产生影响。

于 2015-07-20T19:55:21.460 回答