Выбор ответа Junior HTTP-сервер, Express, NestJS обновлено

Как Express узнаёт обработчик ошибок

Вопрос

Как Express отличает middleware-обработчик ошибок от обычного?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: По числу параметров: (err, req, res, next). Express смотрит на fn.length.

Варианты ответа

  1. По имени функции errorHandler или onError
  2. По тому, что он зарегистрирован последним в цепочке
  3. По числу параметров: (err, req, res, next)правильный ответ
  4. По вызову app.error(...) вместо app.use

Разбор

Express смотрит на fn.length. Функция с четырьмя параметрами считается обработчиком ошибок и вызывается только после next(err) или исключения. Если убрать неиспользуемый next, Express сочтёт её обычным middleware.

  • Имя функции не учитывается.
  • Регистрировать его последним правильно, но признаком это не является.
  • Метода app.error нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.