Поймать все ошибки 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 ваших пользователей:

  1. В Google Analytics щелкните раздел " Behavior ", а затем отчет " Top Events.
  2. Вы получите список категорий событий. Нажмите window.onerror в списке.
  3. Вы увидите список трассировок стека Javascript и сообщений об ошибках. Добавьте столбец в отчет для версий ОС/браузеров своих пользователей, нажав кнопку " Secondary dimension и введя Event Label в появившемся текстовом поле.
  4. Отчет будет выглядеть как на скриншоте ниже.
  5. Чтобы перевести строки ОС/браузера в более понятные человеку описания, я скопировал и вставил их в 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

Не пытайтесь использовать сторонние сервисы, а попробуйте сами.

Обработчики ошибок могут поймать следующие сценарии,

  1. Uncaught TypeError не может быть захвачен
  2. Uncaught ReferenceError не может быть захвачен, например: var.click()
  3. Ошибка типа может быть захвачена
  4. Синтаксическая ошибка может быть зафиксирована
  5. 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% "готовыми к предпринимательству", но это определенно стоит проверить.