Мониторинг ошибок JavaScript показывает, что различные скрипты не загружены.Это неизбежно? - PullRequest
0 голосов
/ 03 марта 2019

У меня есть BugSnag для отслеживания ошибок JavaScript на моем внешнем интерфейсе.Я заметил, что небольшой процент пользователей, менее 1%, получают ошибки, такие как:

  • jQuery is not defined
  • Bootstrap's JavaScript requires jQuery
  • number_format is not defined

... И так далее.Скрипты загружаются в мой шаблон с использованием стандартных тегов скриптов:

<script src="/vendor/jquery.js"></script>
<script src="/vendor/bootstrap.min.js"></script>
<script src="js/misc.js"></script>
<!-- Page-specific scripts here, typically relying on the above scripts -->

Во всех этих случаях у меня загружается более одного скрипта, который зависит от скриптов, загруженных до него.Например, number_format определяется в misc.js, а затем используется в сценариях, специфичных для страницы, где возникает ошибка.Или jQuery загружается первым, а затем используется Bootstrap, который загружается вторым.

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

У меня такой вопрос: неизбежен ли такой тип загрузки скриптов, вызванный чем-то вроде сбоя в сети для определенных пользователей?Уместно ли просто игнорировать это, зная, что это не настоящая ошибка с моим кодом?Или я могу что-то сделать, чтобы предотвратить эту ошибку, когда скрипт загружается, а его зависимость нет?

Спасибо!

1 Ответ

0 голосов
/ 30 августа 2019

Эти сбои загрузки неизбежны, к сожалению, из-за непредсказуемой природы Интернета и устройств конечного пользователя.Такие мелочи, как сбой в сети, переработка службы или отключение питания устройства, могут привести к тому, что браузер откажется от запроса и оставит вашу страницу в плохом состоянии.

Я выступил на конференции по отладке с этим в качестве одного из моих примеров. Я обсуждаю это около 33:30.

Вы должны защищать свой код.Если ваш сценарий зависит от чего-то, загруженного из отдельного запроса, всегда проверяйте, существует ли он перед использованием.Может быть, даже есть какое-то резервное поведение, такое как отображение пользователю сообщения об ошибке, регистрация события или перезагрузка страницы.

Я работаю над службой под названием TrackJS , которая пытается решитьэти проблемы, сосредоточившись на влиянии пользователя, чтобы помочь вам решить, что важно.Большинство из этих ошибок можно безопасно игнорировать, но вы должны убедиться, что у вас есть соответствующие запасные варианты.

...