Поймать все ошибки JavaScript и отправить их на сервер
Я задавался вопросом, имел ли кто-нибудь опыт обработки ошибок JavaScript во всем мире и отправлял их из клиентского браузера на сервер.
Я думаю, что моя точка зрения совершенно ясна, я хочу знать каждое исключение, ошибку, ошибку компиляции и т.д., которые происходят на стороне клиента и отправлять их на сервер, чтобы сообщить о них.
Im главным образом использует MooTools и head.js
(для стороны JS) и Django для серверной части.
Ответы
Ответ 1
Я недавно тестировал Sentry на производстве, и он отлично работает (JS и другие языки, такие как PHP)
1- Это с открытым исходным кодом (Вы можете установить его на свой собственный сервер) 2- Вы можете использовать бесплатный план (100 отчетов в день)
Или установите его на свой сервер: github.com/getsentry
Ответ 2
Я бы посмотрел window.onerror
Пример:
window.onerror = function(message, url, lineNumber) {
//save error and send to server for example.
return true;
};
Имейте в виду, что возвращение true предотвратит запуск обработчика по умолчанию, а возврат false приведет к запуску обработчика по умолчанию.
Ответ 3
Если ваш сайт использует Google Analytics, вы можете делать то, что я делаю:
window.onerror = function(message, source, lineno, colno, error) {
if (error) message = error.stack;
ga('send', 'event', 'window.onerror', message, navigator.userAgent);
}
Несколько комментариев к коду выше:
- Для современных браузеров полная трассировка стека регистрируется.
- Для старых браузеров, которые не регистрируют трассировку стека, сообщение об ошибке записывается в журнал. (В основном более ранняя версия iOS по моему опыту).
- Версия браузера пользователя также регистрируется, так что вы можете видеть, какие версии ОС/браузера выдают какие ошибки. Это упрощает расстановку приоритетов и тестирование ошибок.
- Этот код работает, если вы используете Google Analytics с "analytics.js", как это. Если вы используете вместо этого "gtag.js", например, вам нужно настроить последнюю строку функции. Смотрите здесь для деталей.
Когда код установлен, вы можете просмотреть ошибки Javascript ваших пользователей:
- В Google Analytics щелкните раздел "
Behavior
", а затем отчет " Top Events
. - Вы получите список категорий событий. Нажмите
window.onerror
в списке. - Вы увидите список трассировок стека Javascript и сообщений об ошибках. Добавьте столбец в отчет для версий ОС/браузеров своих пользователей, нажав кнопку "
Secondary dimension
и введя Event Label
в появившемся текстовом поле. - Отчет будет выглядеть как на скриншоте ниже.
- Чтобы перевести строки ОС/браузера в более понятные человеку описания, я скопировал и вставил их в https://developers.whatismybrowser.com/useragents/parse/
![enter image description here]()
Ответ 4
Кроме того, служба http://jslogger.com может помочь с этим:
Лог ошибок и событий Javascript в облаке
из http://jslogger.com/features:
Теперь вы можете отслеживать все ошибки, которые нарушают работу вашего сайта. Каждая ошибка Javascript будет поймана и принесена вам для последующей отладки.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: не связан с услугой/компанией.
Ответ 5
Вы можете попробовать Atatus - это новая служба отслеживания ошибок JavaScript, а также Real User Monitoring (RUM) для современных веб-приложений.
Мы просто не регистрируем ошибки, а также пользовательские события, вызвавшие ошибку. Это дает вам шаги по воспроизведению ошибки в конце.
Наряду с захватом ошибок мы также фиксируем время загрузки страницы и показываем ее в разных точках - Geo, Browser, Page Drill Down, Page Histogram, Ajax Monitoring and Transaction Monitoring.
https://www.atatus.com/
Доступные документы: https://www.atatus.com/docs
Отказ от ответственности: я являюсь веб-разработчиком Atatus.
Ответ 6
Не пытайтесь использовать сторонние сервисы, а попробуйте сами.
Обработчики ошибок могут поймать следующие сценарии,
- Uncaught TypeError не может быть захвачен
- Uncaught ReferenceError не может быть захвачен, например: var.click()
- Ошибка типа может быть захвачена
- Синтаксическая ошибка может быть зафиксирована
- ReferenceError может быть захвачен
Поймать ошибки Javascript:
window.addEventListener('error', function (e) {
//It Will handle JS errors
})
Исправить ошибки AngularJS:
app.config(function ($provide) {
$provide.decorator('$exceptionHandler', function ($delegate) {
return function (exception, cause) {
//It will handle AngualarJS errors
}
})
})
Ответ 7
Возможно, вы захотите проверить эту новую услугу, http://rescuejs.com/. https://bugsnag.com/
Позволяет регистрировать все ошибки JavaScript без написания кода на стороне сервера. Он также отслеживает версии браузера и так далее.
Я не уверен, что считаю их на 100% "готовыми к предпринимательству", но это определенно стоит проверить.