Поймать все ошибки JavaScript и отправить их на сервер - PullRequest
217 голосов
/ 16 марта 2011

Интересно, есть ли у кого-нибудь опыт обработки ошибок JavaScript в глобальном масштабе и отправки их из клиентского браузера на сервер.

Я думаю, что моя точка зрения достаточно ясна, я хочу знать все исключения, ошибки, ошибки компиляции и т. Д., Которые происходят на стороне клиента, и отправлять их на сервер, чтобы сообщить о них.Я в основном использую MooTools и head.js (для стороны JS) и Django для стороны сервера.

Ответы [ 7 ]

308 голосов
/ 16 марта 2011

Я бы проверил window.onerror

Пример:

window.onerror = function(message, url, lineNumber) {  
  //save error and send to server for example.
  return true;
};  

Имейте в виду, что возвращение true предотвратит запуск обработчика по умолчанию, ивозвращение false позволит запустить обработчик по умолчанию.

17 голосов
/ 22 марта 2013

Я недавно тестировал Sentry на производстве, и он отлично работает (JS и другие языки, такие как PHP)

1- Это открытый исходный код (Вы можете установить его на свой собственный сервер) 2-Вы можете использовать бесплатный план (100 отчетов в день)

или установить его на свой сервер: github.com / getsentry

9 голосов
/ 14 июня 2018

Если ваш сайт использует 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

1 голос
/ 17 июля 2015

Вы можете попробовать Atatus - это новая служба отслеживания ошибок JavaScript вместе с Real User Monitoring (RUM) для современных веб-приложений.

Мы не просто фиксируем ошибки,но также пользовательские события, которые вызвали ошибку.Это дает вам шаги по воспроизведению ошибки на вашем конце.

Помимо регистрации ошибок, мы также фиксируем время загрузки страницы и показываем его с разных точек зрения - гео, браузер, детализация страницы, гистограмма страницы, мониторинг Ajax иМониторинг транзакций.

https://www.atatus.com/

Доступные документы: https://www.atatus.com/docs

Отказ от ответственности: я веб-разработчик в Atatus.

1 голос
/ 04 декабря 2013

Кроме того, служба http://jslogger.com может помочь с этим:

Журнал ошибок и событий Javascript в облаке

из http://jslogger.com/features:

Отныне вы можете следить за всеми ошибками, которые нарушают работу вашего сайта.Каждая ошибка Javascript будет обнаружена и доставлена ​​вам для последующей отладки.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: не связан с сервисом / компанией.

0 голосов
/ 26 апреля 2019

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

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

  1. Невозможно перехватить UnEaught TypeError
  2. Uncaught ReferenceError не может быть перехвачено, например: var.click ()
  3. TypeError может быть перехвачено
  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
      }
   })
})
0 голосов
/ 08 ноября 2012

Возможно, вы захотите проверить эту новую услугу, http://rescuejs.com/. https://bugsnag.com/

Позволяет регистрировать все ошибки JavaScript без написания кода на стороне сервера.Он также отслеживает версии браузера и т. Д.

Я не уверен, что считаю их на 100% «готовыми к работе», но это определенно стоит проверить.

...