Edit: It seems that this could be related to Chrome v43, I downgraded to v42 and everything works fine.
Edit: I've submitted an issue on the Angular's Github repo.
It seems that the error gets thrown by
return logFn.apply(console, args);
line 12221
in angular.js source.
Any tips on what to do now?
I'm trying to migrate my app from AngularJS v1.2 to either v1.3 or v1.4 but I'm getting TypeError: Illegal invocation
on Chrome (tried win, osx and ubuntu).
The stack trace isn't really helping:
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)
So this seems something to do with AJAX requests, but I'm also getting:
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)
I'm using $interval
to update a model class (which is a factory and reflected in the views through setting the $scope.client
to this class):
var runTimer = function () {
self.timeOnline = time(self.timeSoFar);
self.timeSoFar = Date.now() / 1000 - self.alarmTriggeredTime;
};
$interval(runTimer, 1000);
I think there's an issue with $digest/$apply
. I've spent hours debugging this, but still haven't got a clue on what's happening.
Any pointers into further debugging is much appreciated.
Between the angular-issue, the chromium-bug, the webkit-bug and the (I dont even know what this is) something-Webkit-issue it would appear as if everyone (well, mostly everyone) is throwing their hands in the air. Perhaps I'm being judgemental/plain wrong in saying that.
Anyway, I wasn't able to get the window.history.back
case to log without causing an Illegal Invocation
but I was able to do console.log.call(window, 'x')
with the following 'snippet:'
(function() { console.log = console.log.bind(console); }());
(taken straight off of the last link there, thanks Brian!)
Just slap that out in the top of your HTML document/wherever you want (I guess).
I'm super curious as to what would happen if you were to run that @Ignas. I cannot seem to replicate the issue you are presenting with a Factory binding to $scope
and running that $interval
of yours.
Would love to see if it holds any effect (albeit, not a functional one but more so a decorative one, I suppose).
Sidenote; Me being the newbie I am, I was just informed by my peers that console.log.call(window) shall indeed throw an Illegal Invocation error, so that is a non-issue afaic. Still curious as to if this would hold effect on the logFn
inside Angular.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With