Недавно мы развернули довольно большое приложение углов, которое включает в себя возможность регистрировать ошибки, возникающие в браузере клиентов. С тех пор, как мы развернулись две недели назад, мы не можем отслеживать бесконечную ошибку дайджеста, которая происходит.Отслеживание бесконечных ошибок дайджеста
Сообщение об ошибке
[$rootScope:infdig] http://errors.angularjs.org/1.2.7/$rootScope/infdig?p0=10&p1=[["fn: function(){e=h(c);var a,b;if(X(e))if(qb(e))for(d!==\nm&&(d=m,l=d.length=0,f++),a=e.length,l!==a&&(f++,d.length=l=a),b=0;b<a;b++)d[b]!==e[b]&&(f++,d[b]=e[b]);else{d!==k&&(d=k={},l=0,f++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==e[b]&&(f++,d[b]=e[b]):(l++,d[b]=e[b],f++));if(l>a)for(b in f++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!==e&&(d=e,f++);return f}; newVal: 418; oldVal: 410","$index; newVal: 28; oldVal: 29","$index; newVal: 29; oldVal: 28","$index; newVal: 70; oldVal: 69","$index; newVal: 69; oldVal: 70","$index; newVal: 78; oldVal: 79","$index; newVal: 79; oldVal: 78","$index; newVal: 94; oldVal: 95","$index; newVal: 95; oldVal: 94"],["fn: function(){e=h(c);var a,b;if(X(e))if(qb(e))for(d!==\nm&&(d=m,l=d.length=0,f++),a=e.length,l!==a&&(f++,d.length=l=a),b=0;b<a;b++)d[b]!==e[b]&&(f++,d[b]=e[b]);else{d!==k&&(d=k={},l=0,f++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==e[b]&&(f++,d[b]=e[b]):(l++,d[b]=e[b],f++));if(l>a)for(b in f++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!==e&&(d=e,f++);return f}; newVal: 426; oldVal: 418","$index; newVal: 24; oldVal: 23","$index; newVal: 23; oldVal: 24","$index; newVal: 29; oldVal: 28","$index; newVal: 28; oldVal: 29","$index; newVal: 53; oldVal: 52","$index; newVal: 52; oldVal: 53","$index; newVal: 69; oldVal: 70","$index; newVal: 70; oldVal: 69"],["fn: function(){e=h(c);var a,b;if(X(e))if(qb(e))for(d!==\nm&&(d=m,l=d.length=0,f++),a=e.length,l!==a&&(f++,d.length=l=a),b=0;b<a;b++)d[b]!==e[b]&&(f++,d[b]=e[b]);else{d!==k&&(d=k={},l=0,f++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==e[b]&&(f++,d[b]=e[b]):(l++,d[b]=e[b],f++));if(l>a)for(b in f++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!==e&&(d=e,f++);return f}; newVal: 436; oldVal: 426","$index; newVal: 23; oldVal: 24","$index; newVal: 24; oldVal: 23","$index; newVal: 28; oldVal: 29","$index; newVal: 29; oldVal: 28","$index; newVal: 33; oldVal: 32","$index; newVal: 32; oldVal: 33","$index; newVal: 70; oldVal: 69","$index; newVal: 69; oldVal: 70","$index; newVal: 89; oldVal: 88","$index; newVal: 88; oldVal: 89"],["fn: function(){e=h(c);var a,b;if(X(e))if(qb(e))for(d!==\nm&&(d=m,l=d.length=0,f++),a=e.length,l!==a&&(f++,d.length=l=a),b=0;b<a;b++)d[b]!==e[b]&&(f++,d[b]=e[b]);else{d!==k&&(d=k={},l=0,f++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==e[b]&&(f++,d[b]=e[b]):(l++,d[b]=e[b],f++));if(l>a)for(b in f++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!==e&&(d=e,f++);return f}; newVal: 442; oldVal: 436","$index; newVal: 32; oldVal: 33","$index; newVal: 33; oldVal: 32","$index; newVal: 69; oldVal: 70","$index; newVal: 70; oldVal: 69","$index; newVal: 86; oldVal: 87","$index; newVal: 87; oldVal: 86"],["fn: function(){e=h(c);var a,b;if(X(e))if(qb(e))for(d!==\nm&&(d=m,l=d.length=0,f++),a=e.length,l!==a&&(f++,d.length=l=a),b=0;b<a;b++)d[b]!==e[b]&&(f++,d[b]=e[b]);else{d!==k&&(d=k={},l=0,f++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==e[b]&&(f++,d[b]=e[b]):(l++,d[b]=e[b],f++));if(l>a)for(b in f++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!==e&&(d=e,f++);return f}; newVal: 450; oldVal: 442","$index; newVal: 24; oldVal: 23","$index; newVal: 23; oldVal: 24","$index; newVal: 29; oldVal: 28","$index; newVal: 28; oldVal: 29","$index; newVal: 33; oldVal: 32","$index; newVal: 32; oldVal: 33","$index; newVal: 87; oldVal: 86","$index; newVal: 86; oldVal: 87"]]
at ? line 6, column 449 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:6)
at h.$digest line 101, column 152 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:101)
at h.$apply line 103, column 100 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:103)
at f line 67, column 98 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:67)
at E line 71, column 117 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:71)
at XMLHttpRequest.onreadystatechange line 72, column 167 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:72)
Вещи, которые мы знаем,
- Мы используем angularjs 1.2.7 с
ngRoute
,bootstrap-ui
, и множество других пользовательских директив. - Возможно, это происходит только в Android 2.3.x (Gingerbread) и Kindle Fire (Silk browser)
- Мы не можем воспроизвести эту ошибку в браузере, эмуляторе или физическом устройстве.
- Похоже, что не изолирован от конкретного маршрута.
Вопрос
Есть ли руководство отслеживать причину этой ошибки? Использовать исходные карты? Использовать незащищенную версию временно? Захватить что-то еще внутри углового?
Использование Unminified Angular даст вам немного облегчить чтение результатов. Но я бы сосредоточился на различных значениях newval, oldval, указанных в ошибке, например, таких последних: «$ index; newVal: 87; oldVal: 86», «$ index; newVal: 86; oldVal: 87» и видеть если вы можете их понять, похоже, что часы на '$ index' могут быть связаны? Есть также функция часов, которая появляется - я попытаюсь выяснить, где она используется. Извините за неопределенность, но я начал бы со всей информации в этой ошибке и посмотрю, сможете ли вы решить, какое изменение колеблется, вызывая нестабильность. – KayakDave