2014-01-24 5 views
3

Недавно мы развернули довольно большое приложение углов, которое включает в себя возможность регистрировать ошибки, возникающие в браузере клиентов. С тех пор, как мы развернулись две недели назад, мы не можем отслеживать бесконечную ошибку дайджеста, которая происходит.Отслеживание бесконечных ошибок дайджеста

Сообщение об ошибке

[$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)
  • Мы не можем воспроизвести эту ошибку в браузере, эмуляторе или физическом устройстве.
  • Похоже, что не изолирован от конкретного маршрута.

Вопрос

Есть ли руководство отслеживать причину этой ошибки? Использовать исходные карты? Использовать незащищенную версию временно? Захватить что-то еще внутри углового?

+0

Использование Unminified Angular даст вам немного облегчить чтение результатов. Но я бы сосредоточился на различных значениях newval, oldval, указанных в ошибке, например, таких последних: «$ index; newVal: 87; oldVal: 86», «$ index; newVal: 86; oldVal: 87» и видеть если вы можете их понять, похоже, что часы на '$ index' могут быть связаны? Есть также функция часов, которая появляется - я попытаюсь выяснить, где она используется. Извините за неопределенность, но я начал бы со всей информации в этой ошибке и посмотрю, сможете ли вы решить, какое изменение колеблется, вызывая нестабильность. – KayakDave

ответ

2

Попробуйте это, отслеживать стек javascript с помощью Spy-js. Вы можете увидеть стек вызовов, который был фактически выполнен и время, которое потребовалось (ищите лага/тайм-аут):

https://github.com/spy-js/spy-js

http://spy-js.com/

Его теперь интегрированы в WebStorm с поддержкой angularJS.

http://blog.jetbrains.com/webstorm/2014/01/webstorm-8-eap/

Я также предлагаю не использовать какие-либо уменьшенная JS при отладке.

0

У меня были подобные проблемы - ушел после обновления до последней версии AngularJS (1.3.15 на данный момент).

Смежные вопросы