Menu
CoddyTech

Ответ с ошибкой

Часть раздела Основы Express путешествия по Node.js на Coddy. Урок 17 из 23.

Маршрут может завершиться с ошибкой, если на сервере что-то пошло не так. Вызов ошибки через Error передаёт её Express. Обработчик ошибок — это промежуточное ПО с четырьмя параметрами, первым из которых является err. Express передаёт выброшенные ошибки такому промежуточному ПО.

app.use((err, req, res, next) => {
    res.status(500).json({error: 'Try later'});
});

Разместите обработчик после маршрутов. Клиент должен получить короткое сообщение, а сервер может записать подробности в журнал. Оставьте все четыре параметра, даже если next не используется: Express распознаёт обработчики ошибок по форме функции.

До добавления обработчика запрос GET /broken возвращает собственную HTML-страницу ошибки Express. Вызов next(err) также передаёт ошибку обработчику ошибок; вызов next() продолжает выполнение обычным образом.

challenge icon

Задание

Легко

Запускайте только practice-errors/server.js. Файлы Recipe Box не затронуты, и вы продолжите работу с ними на следующем уроке.

Запустите приложение и отправьте запрос GET /broken, чтобы увидеть страницу ошибки по умолчанию. Добавьте обработчик ошибок после маршрутов. Запишите err.message с помощью console.error, затем отправьте статус 500 и {"error":"Try later"}. Ответ не должен раскрывать Database offline, но в консоли должно отображаться это сообщение.

Маршруты, которые вызывают ошибку, находятся в заблокированном файле practice-errors/routes.js. Оставьте его подключение; напишите обработчик в server.js.

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

import routes from './routes.js';
import express from 'express';
const app = express();
app.use(routes);
// Добавьте здесь обработчик ошибок.
app.listen(3000);

Все уроки раздела Основы Express

Потренируйтесь самостоятельно: Песочница Express