Покажите маршрут, передачу ошибки и порядок регистрации middleware.
Зачем
Зачем это нужно
Отделите безопасный публичный контракт от внутренней причины сбоя.
Проверьте один ответ и одну запись ошибки на каждое выполнение запроса.
Вопросы
Частые вопросы
Как задать пример ошибок маршрута?
«Учебный GET /orders/7: запись отсутствует — нужен код not_found; база недоступна — internal_error без SQL и стека. В журнале нужен request_id». Попросите два теста и пример ответа. Дополните успешно найденным заказом, чтобы обработчик ошибок не перехватил обычный результат. Такой набор проверяет контракт целиком, а не только наличие функции с четырьмя аргументами в конфигурации приложения.
Почему асинхронная ошибка теряется?
Важны версия Express, возвращаемый Promise и наличие ожидаемого вызова. Ошибка в отделённом таймере или забытая асинхронная операция может не относиться к обещанию, которое видит маршрут. Попросите проследить цепочку выполнения. Не добавляйте одновременно несколько обёрток и ручных передач без понимания: так легко отправить одну ошибку дальше дважды и получить повторную обработку одного сбоя.
Что делать, если ответ уже начался?
Нельзя безопасно начать новый JSON-ответ после отправки заголовков или части тела. Попросите отдельную ветку для этого состояния и правила передачи ошибки дальше согласно выбранной версии. В тесте смоделируйте сбой после начала потока. Обычный тест отказа базы до ответа не проверяет этот случай; поведение потокового маршрута нужно согласовать отдельно от стандартного API-обработчика.
Как избежать повторных логов и утечки деталей?
Выберите слой, где записывается окончательное событие с идентификатором запроса и исходной причиной. Нижние уровни могут добавлять контекст без повторной печати одного стека. Публичный ответ проверяйте отдельно на отсутствие SQL, путей и токенов. Енотик помогает собрать цепочку по вашему коду, но не наблюдает работающий сервер; подтвердите результат интеграционными запросами и содержимым фактически созданных логов.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.