SiteScan.top

Ошибки в консоли: какие ломают продажи, а какие можно игнорировать

Классификация ошибок JavaScript по влиянию на пользователя, ловушки source maps и как отделить свой код от чужих виджетов.

JavaScript · Опубликовано: 22 июля 2026 г. · 3 мин чтения · Марк Лебедев

Откройте DevTools на любом коммерческом сайте — красных строк будет от трёх до тридцати. Часть из них безобидна, часть каждый день молча съедает конверсию. Разница не в тексте ошибки, а в том, что происходит с пользователем после неё.

Три уровня влияния

Блокирующие. Исключение выброшено до навешивания обработчиков — кнопка «Купить» просто не реагирует. Классика: Cannot read properties of undefined, вылетевшее в инициализации модуля. Пользователь видит рабочую на вид страницу, которая ничего не делает.

Частичные. Ломается один виджет: карта, слайдер, калькулятор доставки. Остальная страница жива, но сценарий не завершается.

Шумовые. Ошибка в аналитике, заблокированный расширением запрос, ResizeObserver loop limit exceeded. На поведение не влияют, но маскируют настоящие проблемы в потоке логов.

Что почти всегда стоит чинить

Ловушка source maps

Без карт исходников стек выглядит как main.4f2a.js:1:88213, и на этом расследование заканчивается. Правильная схема: собирать sourcemap на каждый релиз, загружать в систему мониторинга и не выкладывать рядом с бандлом — иначе исходники окажутся публичными. В большинстве сборщиков это флаг hidden-source-map.

Отделяйте чужой код

Скрипты чата, рекламы и A/B-тестов дают половину ошибок и почти ни одной, которую вы можете исправить. Заведите фильтр по домену источника:

window.addEventListener("error", (e) => { const own = e.filename?.startsWith(location.origin); report(e, { severity: own ? "error" : "third-party" }); });

Так свои ошибки не тонут в чужих. Отдельно ставьте бюджет: если сторонний виджет добавляет больше N ошибок в сутки, его удаляют или заменяют.

Проверять до продакшена

Ошибки времени выполнения не ловятся линтером и типами: они возникают на реальных данных. Дешёвый способ поймать заранее — прогонять ключевые страницы в headless-браузере при каждом релизе и падать сборку, если появились новые ошибки консоли. Пять минут в CI против недели незамеченного сбоя оформления заказа.

И храните историю: одна и та же ошибка, всплывающая после каждого деплоя, — это не «плавающий баг», а незакрытая гонка при загрузке.

Читайте также

Проверьте, что из этого есть на вашем сайте

Бесплатное сканирование покажет битые ссылки, ошибки JS и проблемы производительности за минуту.