Привет ребята!

Сегодня мы увидим, как создать глобальную обработку ошибок в NodeJ без необходимости реализации множества блоков try/catch в вашем коде.

Доступ к коду примера на Github

Рекомендуем вам также ознакомиться с этим видео на YouTube.

Шаги

Для начала создадим всю начальную структуру проекта для лучшего понимания.

ТРЕБОВАНИЯ:

  • узлы
  • Npm
  • Выражать
  1. Добавьте новую папку на свой компьютер и назовите ее «generic-error-handler».
  2. Получите доступ к новой папке, откройте терминал и введите:
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: