> Как отлаживать ошибки в коде (JavaScript)
Уровень: senior · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы
Компании: ЭНИРАН
Стек: Node.js, JavaScript
> Пример ответа
Отладка ошибок в JavaScript/Node.js — это системный процесс. Основные шаги:
-
Воспроизведение ошибки: Сначала нужно точно понять, при каких условиях возникает баг. Используйте
console.logилиdebuggerдля отслеживания состояния. -
Чтение стектрейса: Node.js выводит полный стек вызовов при ошибке. Ищите первую строку, указывающую на ваш код, а не на библиотеки.
-
Инструменты:
- Chrome DevTools для клиентского JS: вкладка Sources, точки останова (breakpoints), пошаговое выполнение.
- Node.js Inspector: запуск с флагом
--inspect, затем подключение через Chrome DevTools (chrome://inspect). - VS Code: встроенный дебаггер — ставьте точки останова, запускайте с конфигурацией Node.js.
-
Логирование: Используйте
console.errorдля ошибок,console.warnдля предупреждений. Для сложных случаев — библиотеки вродеdebugилиpino. -
Обработка исключений: Оберните критичные участки в
try/catchи логируйте полную информацию об ошибке, включаяerror.stack. -
Типичные ошибки в Node.js:
- Асинхронные ошибки (необработанные промисы) — используйте
process.on('unhandledRejection'). - Утечки памяти — профилируйте с помощью
--inspectи вкладки Memory. - Ошибки в колбэках — проверяйте первый аргумент (error-first pattern).
- Асинхронные ошибки (необработанные промисы) — используйте
-
Автоматизация: Настройте ESLint для статического анализа, используйте TypeScript для типизации, пишите юнит-тесты (Jest, Mocha).
Пример быстрой отладки: если функция не возвращает ожидаемое значение, вставьте console.log({ input, result }) перед return и проверьте данные. Если ошибка в асинхронном коде — добавьте .catch(console.error) к промису.
> Похожие задачи по JavaScript
Работали ли вы с интерцепторами в NestJS
Можно ли вызвать монтирование или размонтирование компонента с помощью key в React
> Похожие задачи по frontend
Как решать проблему потери контекста методов в классах JavaScript/TypeScript
Как использовать arguments в JavaScript?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью