====== http-errors ====== Для зручного створення помилок скористаємось пакетом http-errors. Інсталюємо його командою: npm install http-errors Створюємо мідлвеар що буде займатись обробкою помилок. Один мідлвеар для обробок помилок, другий для обробки відсутності запрашуємо роутінга import { isHttpError } from 'http-errors'; //Функція обробки помилок errorHandlerMiddleware.js export const errorHandlerMiddleware = (error, req, res, next) => { if (isHttpError(error)) { res.status(error.status).json({ status: error.status, message: error.message, data: {"message": error.message}, }); } else { res.status(500).json({ status: 500, message: error.message, }); } }; // notFoundHendker.js //Функція обробки помилок у разі відсутності маршруту export const notFoundHandler = (req, res) => { res.status(404).send('Oops! Route was not found!'); }; Підключаємо ці мідлвеари для обробки помилок у головний файл server.js import express from 'express'; import pino from 'pino-http'; import cors from 'cors'; import { env } from './utils/env.js'; import { ENV_VARS } from './const/const.js'; import contactsRouter from './routers/contacts.js'; import { errorHandlerMiddleware } from './middlewares/errorHandler.js'; import { notFoundHandler } from './middlewares/notFoundHandler.js'; //Запуск сервера export const setupServer=()=> { //Ініціалізація сервера const app = express(); // app.use(pino()); // app.use( // pino({ // transport: { // target: 'pino-pretty', // }, // }), // ); app.use(cors()); //Додавання middleware для парсингу JSON app.use( express.json({ limit: '1mb', type: ['application/json', 'application/vnd.api+json'], }), ); //Підключення маршрутів app.use(contactsRouter); //підключення обробників помилок app.use(errorHandlerMiddleware); app.use(notFoundHandler); //Запуск сервера const PORT = env(ENV_VARS.PORT, 3000); app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); }); } В модулі де необхідно обробити помилку, підключаємо бібліотеку і описуемо помилку import createHttpError from 'http-errors'; export const getContactsById = async (id) => { const idobj = { _id: id }; if (!mongoose.Types.ObjectId.isValid(id)) { throw createHttpError(404, 'invalid ID'); } const contactsfound = await ContactCollection.find(idobj); if (!contactsfound || contactsfound.length === 0) { throw createHttpError(404, `Contact with id ${id} not found!`); } return contactsfound; } Тепер при створенні помилки чере **throw createHttpError(404, `Contact with id ${id} not found!`);** бібліотека автоматично перехватить помилку і передасть в обробку у мідлваре **errorHandlerMiddleware.js** або **notFoundHandler.js**