Библиотека Lighthouse для JavaScript предоставляет средства для анализа веб-страниц и генерации отчетов о производительности, доступности, SEO и других аспектах. Поскольку работа с веб-ресурсами сопряжена с сетевыми задержками, некорректными данными и различными непредвиденными ситуациями, грамотная обработка ошибок является критически важной частью при интеграции Lighthouse в проекты.
Сетевые ошибки Возникают при невозможности загрузки страницы или ресурсов. Классические примеры: таймаут соединения, отказ в доступе, недоступность сервера.
Особенности обработки:
try...catch для асинхронных вызовов,
таких как lighthouse(url, options).Ошибки конфигурации Возникают при неправильных
настройках объекта LighthouseFlags или
LighthouseConfig. Примеры: неверно указан
outputPath, некорректный port, конфликт
настроек аудитов.
Рекомендации:
lighthouse().Ошибки выполнения аудитов Lighthouse выполняет множество аудитов, включая анализ DOM, Lighthouse Performance Metrics и Accessibility Checks. Ошибки могут возникать из-за:
Стратегии обработки:
try...catch.Lighthouse использует промисы и асинхронные функции для запуска аудитов. Типичный паттерн обработки ошибок:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
async function runLighthouse(url, options, config) {
let chrome;
try {
chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
options.port = chrome.port;
const result = await lighthouse(url, options, config);
return result.lhr; // Lighthouse Report
} catch (err) {
console.error('Ошибка выполнения Lighthouse:', err.message);
throw err;
} finally {
if (chrome) {
await chrome.kill();
}
}
}
Ключевые моменты:
Для отладки и анализа ошибок в Lighthouse важна подробная информация о состоянии:
err.stack) помогает
определить, на каком этапе произошел сбой.В случаях массового анализа страниц удобно создавать унифицированный обработчик ошибок, который:
Пример структуры объекта ошибки:
{
url: 'https://example.com',
type: 'NetworkError', // NetworkError, ConfigError, AuditError
message: 'Не удалось загрузить страницу',
timestamp: '2026-03-23T12:45:00Z',
stack: 'Error stack trace...'
}
Таймауты Настройка параметра
maxWaitForLoad или использование
Promise.race() для ограничения времени ожидания загрузки
страницы.
Недоступность ресурсов Логи записываются с указанием URL недоступных ресурсов, что позволяет различать критические и незначительные ошибки.
Ошибки при рендеринге Иногда скрипты страницы вызывают исключения при рендеринге. В таких случаях полезно сохранять скриншоты или HAR-файлы, чтобы точно диагностировать проблему.
При запуске Lighthouse в CI/CD пайплайне важно, чтобы ошибки:
Это достигается комбинацией асинхронного try...catch,
стандартизированных объектов ошибок и централизованного логирования.