Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
|
http-errors [2024/06/01 15:10] tro создано |
http-errors [2024/06/03 19:02] (текущий) tro |
||
|---|---|---|---|
| Строка 4: | Строка 4: | ||
| npm install http-errors | npm install http-errors | ||
| </ | </ | ||
| + | Створюємо мідлвеар що буде займатись обробкою помилок. Один мідлвеар для обробок помилок, | ||
| < | < | ||
| - | // src/ | + | import { isHttpError } from ' |
| - | // 1. Імпортуємо функцію з бібліотеки | + | //Функція обробки помилок |
| - | import createHttpError from ' | + | export const errorHandlerMiddleware = (error, req, res, next) => { |
| - | /* Інший код файлу | + | if (isHttpError(error)) { |
| + | res.status(error.status).json({ | ||
| + | status: error.status, | ||
| + | message: error.message, | ||
| + | data: {" | ||
| + | }); | ||
| + | } else { | ||
| + | res.status(500).json({ | ||
| + | status: 500, | ||
| + | message: error.message, | ||
| + | }); | ||
| + | } | ||
| + | }; | ||
| + | |||
| + | </code> | ||
| + | < | ||
| + | // notFoundHendker.js | ||
| + | //Функція обробки помилок у разі відсутності маршруту | ||
| + | export const notFoundHandler = (req, res) => { | ||
| + | res.status(404).send(' | ||
| + | }; | ||
| + | </ | ||
| + | Підключаємо ці мідлвеари для обробки помилок у головний | ||
| + | < | ||
| + | import express from ' | ||
| + | import pino from ' | ||
| + | import cors from ' | ||
| + | import { env } from ' | ||
| + | import { ENV_VARS } from ' | ||
| + | |||
| + | import contactsRouter from ' | ||
| + | import { errorHandlerMiddleware } from ' | ||
| + | import { notFoundHandler } from ' | ||
| + | |||
| + | |||
| + | //Запуск сервера | ||
| + | export const setupServer=()=> | ||
| + | |||
| + | | ||
| + | const app = express(); | ||
| + | |||
| + | // app.use(pino()); | ||
| + | // app.use( | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | // }, | ||
| + | // }), | ||
| + | // ); | ||
| + | |||
| + | app.use(cors()); | ||
| + | |||
| + | // | ||
| + | app.use( | ||
| + | express.json({ | ||
| + | limit: ' | ||
| + | type: [' | ||
| + | }), | ||
| + | ); | ||
| + | |||
| + | // | ||
| + | app.use(contactsRouter); | ||
| + | |||
| + | // | ||
| + | app.use(errorHandlerMiddleware); | ||
| + | app.use(notFoundHandler); | ||
| + | |||
| + | |||
| + | // | ||
| + | const PORT = env(ENV_VARS.PORT, | ||
| + | |||
| + | app.listen(PORT, | ||
| + | console.log(`Server is running on port ${PORT}`); | ||
| + | }); | ||
| + | |||
| + | } | ||
| + | </ | ||
| + | В модулі де необхідно обробити помилку, | ||
| + | < | ||
| + | import createHttpError from ' | ||
| - | export const getStudentByIdController | + | export const getContactsById |
| - | const { studentId | + | const idobj = { _id: id }; |
| - | const student = await getStudentById(studentId); | + | |
| - | | + | |
| - | // 2. Створюємо та налаштовуємо помилку | + | |
| - | next(createHttpError(404, | + | } |
| - | return; | + | |
| - | } | + | |
| - | res.json({ | + | const contactsfound = await ContactCollection.find(idobj); |
| - | status: 200, | + | |
| - | message: `Successfully found student with id ${studentId}!`, | + | |
| - | data: student, | + | |
| - | }); | + | |
| - | }; | + | |
| + | if (!contactsfound || contactsfound.length === 0) { | ||
| + | throw createHttpError(404, | ||
| + | } | ||
| + | return contactsfound; | ||
| + | } | ||
| </ | </ | ||
| + | Тепер при створенні помилки чере **throw createHttpError(404, | ||