Я реализовал клиента протоколирование на стороне исключения, используя 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
Можно ли это улучшить с использованием исходных карт или это работает только при активном использовании инструментов разработчика?
Что бы я хотел, это получить полную трассировку стека с использованием исходных карт (или, по крайней мере, реального номера строки), когда возникает ошибка для пользователя, у которого нет активированных/активированных карт разработчика. Это вообще возможно ?
Нужно решение по той же проблеме. Как долго вы это делаете сейчас? – IsmailS
@iSid не нашли решение. похоже, что это невозможно, пока браузеры не реализуют его. не знаю больше информации, чем то, что написано в ответе. извините – SzilardD
@iSid этот вопрос, похоже, имеет больше решений: http://stackoverflow.com/questions/19420604/angularjs-stack-trace-ignoring-source-map – xmojmr