Как я могу получить больше stacktrace в AngularJS

Я использую декоратор, чтобы изменить поведение $exceptionHandler, отправив журналы на сервер. Моя проблема заключается в том, что stackatrace исключений кажется бесполезным, показывая только часть стека. Например:

Синтаксическая ошибка: токен 'undefined' не является первичным выражением в столбце NaN выражения [выражение здесь].

at Error (native)
at throwError (http://localhost:8080/angular/angular.js:6674:62)
at primary (http://localhost:8080/angular/angular.js:6918:9)
at unary (http://localhost:8080/angular/angular.js:6900:14)
at multiplicative (http://localhost:8080/angular/angular.js:6883:16)
at additive (http://localhost:8080/angular/angular.js:6874:16)
at relational (http://localhost:8080/angular/angular.js:6865:16)
at equality (http://localhost:8080/angular/angular.js:6856:16)
at logicalAND (http://localhost:8080/angular/angular.js:6847:16)
at logicalOR (http://localhost:8080/angular/angular.js:6839:41)

Есть ли способ настроить AngularJS для отображения большего количества стеков? Если я посмотрю на консоль Chrome, я могу увидеть больше стека и получить имя файла, но не в обработчике исключений.

Даже если я изменю предел Error, я не могу увидеть исходный файл:

Error.stackTraceLimit = Infinity;

Ответы

Ответ 1

1 Используйте отладчик вместо консоли Chrome

Google Chrome предоставляет отладчик, который помогает программистам JS находить ошибки и проблемный код.

По мере увеличения сложности приложений JavaScript, разработчики должны мощные средства отладки, чтобы помочь быстро обнаружить причину выпустить и исправить это эффективно. Chrome DevTools включает в себя несколько полезные инструменты, которые помогут сделать отладку JavaScript менее болезненной.

Вы можете попытаться установить некоторые контрольные точки где угодно (попытаться обнаружить проблемные строки/методы).

Официальную документацию смотрите здесь: Google Chrome Debugger

2 Используйте расширение для браузера

Многие плагины, такие как ng-inspector или AngularJS Batarang, помогают распечатать состояние вашей программы AngularJS (экземпляры контроллера, имена/значения переменных и области действия).

3 Используйте службу $ log (оболочка console.log)

Служба журналов AngularJS $ предоставляет простой ресурс для печати состояния ваших переменных в консоли браузера (если имеется).

Простой сервис для регистрации. Реализация по умолчанию безопасно записывает сообщение в консоль браузера (если имеется).

Основная цель этого сервиса - упростить отладку и поиск и устранение неисправностей.

По умолчанию ведется запись отладочных сообщений. Вы можете использовать ng. $ logProvider # debugEnabled, чтобы изменить это. AngularJS $ log service поможет вам отладить вашу программу.


С моей точки зрения, хорошая отладка AngularJS включает в себя сочетание всех вышеперечисленных решений.

Я надеюсь, что это полезно для вас.