Привет ребята!
Сегодня мы увидим, как создать глобальную обработку ошибок в NodeJ без необходимости реализации множества блоков try/catch в вашем коде.
Доступ к коду примера на Github
Рекомендуем вам также ознакомиться с этим видео на YouTube.
Шаги
Для начала создадим всю начальную структуру проекта для лучшего понимания.
ТРЕБОВАНИЯ:
- узлы
- Npm
- Выражать
- Добавьте новую папку на свой компьютер и назовите ее «generic-error-handler».
- Получите доступ к новой папке, откройте терминал и введите:
npm init -y yarn init -y
3. Затем мы добавим несколько пакетов в наш проект.
npm i express yarn add express
4. Откройте файл package.json и добавьте в сеанс «scripts» следующую команду:
"dev": "node app.js"
5. Добавьте файл app.js в свой проект и введите следующий код, это будет наша начальная конфигурация.
const express = require('express') const app = express() // enabling our app to work with JSON app.use(express.json()); // adding a default route to our application app.get('/', (req, res, next) => { res.send({ message: 'Hello world' }) }) app.listen(3001, () => { console.log('App listening at 3001') })
С этим вы сможете увидеть результат ниже
6. Добавьте файл с именем «example.controller.js», затем скопируйте и вставьте приведенный ниже код.
class ExampleController { static throwErrorMethod(req, res) { throw new Error('Some error that can happen during the app execution'); } } module.exports = ExampleController;
7. Вернемся к app.js, мы добавим код, отвечающий за «обертку» наших маршрутов, и обработаем ошибки.
// this will be our wrapper const use = fn => (req, res, next) => Promise.resolve(fn(req, res, next)).catch(next); // this is the route we're going to "wrap" app.get('/example', use(exampleController.throwErrorMethod)); // this will be our middleware, our ErrorHandler app.use(function(err, req, res, next) { res.status(500).send({ message: err.message }) });
8. Наконец, запустите свой код. "="
npm run dev yarn dev
Вы можете проверить свои маршруты с помощью приложения postman: