Angularjs 如何在单页angular应用程序中使用空数组调试infdig?

Angularjs 如何在单页angular应用程序中使用空数组调试infdig?,angularjs,Angularjs,我有一个单页应用程序,我已经和几个同事一起开发了一年多。这是一款使用angular ui路由器在页面之间移动的angular应用程序。有时,当第一次访问设置页面时,会引发以下异常: Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! Watchers fired in the last 5 iterations: [] http://errors.angularjs.org/1.3.3/$rootScope/

我有一个单页应用程序,我已经和几个同事一起开发了一年多。这是一款使用angular ui路由器在页面之间移动的angular应用程序。有时,当第一次访问设置页面时,会引发以下异常:

Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
http://errors.angularjs.org/1.3.3/$rootScope/infdig?p0=10&p1=%5B%5D
    at REGEX_STRING_REGEXP (angular.js:63)
    at Scope.$get.Scope.$digest (angular.js:14084)
    at Scope.$get.Scope.$apply (angular.js:14308)
    at done (angular.js:9532)
    at completeRequest (angular.js:9717)
    at XMLHttpRequest.requestLoaded (angular.js:9660)
我理解正常情况下的[$rootScope:infdig],但watchers数组为空的事实让我非常困惑。此外,调试非常困难,因为它只是偶尔发生。使用inspector,我能够确定正在完成的请求是设置HTML文件的加载。从设置页面中删除各种控制器并不能缓解问题,即使加载设置页面的哑“shell”版本时只加载了普通小部件,也会出现这种情况


我如何才能找出导致此空infdig异常的原因?我怎样才能阻止它呢?

我会在评论中提到这一点,但我还没有足够的声誉


我以前在使用ui路由器时遇到过这个问题。在我的例子中,问题是(“$stateChangeStart”)上的
$rootScope.$on内部的授权逻辑,这将它踢进了一个无限循环。为了解决我的问题,我在Chrome中的module.run/config中的所有代码区域都设置了断点,在那里它使用
$state.go
重定向。我能够逐步完成逻辑并查看无限循环从何处开始。

您的某些代码正在修改作用域。&转到无限循环。。即使设置控制器不执行任何操作,也会发生这种情况。您能否创建相同的plunkr/小提琴。。不幸的是,我无法在更大的应用程序之外重现这种情况。相信我,我已经试过了。是否没有一种方法可以查看引发异常的变化?通过调用堆栈查看,我没有看到任何“我们”的代码。您在应用程序中应用了任何筛选器吗?很好的调用,我们的问题似乎也与身份验证有关。它只在应用程序第一次加载时发生。不幸的是我不能,它是一个更大的专有应用程序的一部分。不过,如果我真的能找到问题的根源,我希望能在一个更简单的应用程序中重现它。