2013-10-11 4 views
6

Я реализовал клиента протоколирование на стороне исключения, используя window.onerror, где я извлечения текущей ошибки и трассировки стека и отправить его на сервер с помощью AJAXРаботают ли исходные карты JavaScript при обнаружении ошибок?

window.onerror = function(message, url, line) { 

     var stackTrace = printStackTrace(); //get stack trace 

     //send message, url, line and stackTrace to the server using an ajax call 
    } 

где printStackTrace является функция, обеспечиваемая этой библиотеки: http://stacktracejs.com/

Проблема заключается в том, что при производстве все файлы JavaScript уменьшаются, поэтому трассировка стека и номер строки не очень полезны, поскольку все сообщения об ошибках сообщаются в строке 1 в файле, что является нормальным, так как миниатюрная версия содержит одну строку кода. Например:

Message: Object doesn't support property or method 'indexOf' 
URL: http://[server]/[site]/content/combined/combined.635EE367354E6DF721593CAC56FECF95.min.js 
Line: 1 

Можно ли это улучшить с использованием исходных карт или это работает только при активном использовании инструментов разработчика?

Что бы я хотел, это получить полную трассировку стека с использованием исходных карт (или, по крайней мере, реального номера строки), когда возникает ошибка для пользователя, у которого нет активированных/активированных карт разработчика. Это вообще возможно ?

+0

Нужно решение по той же проблеме. Как долго вы это делаете сейчас? – IsmailS

+0

@iSid не нашли решение. похоже, что это невозможно, пока браузеры не реализуют его. не знаю больше информации, чем то, что написано в ответе. извините – SzilardD

+0

@iSid этот вопрос, похоже, имеет больше решений: http://stackoverflow.com/questions/19420604/angularjs-stack-trace-ignoring-source-map – xmojmr

ответ

4

Вы можете определенно получить всю информацию, содержащуюся в исходных картах, и сконструировать трассировку стека самостоятельно, но AFAIK пока не является изящным решением. В любом случае это потребует минимального изменения файла карты и, возможно, исходного файла. И у вас будут проблемы с жестким перекрестным браузером, так как не все браузеры полностью поддерживают исходные карты.

Похоже трассировки стека имеет это в их плане, но не кто выполняет на нем еще: https://github.com/eriwen/javascript-stacktrace/issues/44

Получить Sentry действительно делает это как часть их JS лесосечных утилиты, но она обернута внутри более многофункциональный инструмент, и я считаю, что он поддерживает только ведение журнала отслеживания стека в Chrome на данный момент: https://github.com/getsentry/raven-js

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

  • Нет связанных вопросов^_^