Ошибки в консоли: какие ломают продажи, а какие можно игнорировать
Классификация ошибок JavaScript по влиянию на пользователя, ловушки source maps и как отделить свой код от чужих виджетов.
JavaScript · Опубликовано: 22 июля 2026 г. · 3 мин чтения · Марк Лебедев
Откройте DevTools на любом коммерческом сайте — красных строк будет от трёх до тридцати. Часть из них безобидна, часть каждый день молча съедает конверсию. Разница не в тексте ошибки, а в том, что происходит с пользователем после неё.
Три уровня влияния
Блокирующие. Исключение выброшено до навешивания обработчиков — кнопка «Купить» просто не реагирует. Классика: Cannot read properties of undefined, вылетевшее в инициализации модуля. Пользователь видит рабочую на вид страницу, которая ничего не делает.
Частичные. Ломается один виджет: карта, слайдер, калькулятор доставки. Остальная страница жива, но сценарий не завершается.
Шумовые. Ошибка в аналитике, заблокированный расширением запрос, ResizeObserver loop limit exceeded. На поведение не влияют, но маскируют настоящие проблемы в потоке логов.
Что почти всегда стоит чинить
Uncaught (in promise) TypeError— необработанный reject, за которым обычно стоит незавершённый сетевой запрос.Failed to fetchна своём домене — это либо CORS, либо упавший бэкенд, а не «глюк браузера».Hydration failedв React/Vue — разметка сервера и клиента разошлись; следом идут потерянные обработчики.- Ошибки внутри обработчиков
submit— прямой путь к неотправленной форме.
Ловушка 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 и проблемы производительности за минуту.