Express.js: перехватить все обработчики ошибок, используя http-коды состояния - PullRequest
0 голосов
/ 02 апреля 2019

Я использую этот отличный пакет npm http-коды состояния который помогает с кодами состояния и по моему скромному мнению обработка ошибок в Express.

Итак, мой вопрос: будет ли это отличным решением для ошибок?

Разве эти ошибки (если они случаются ... ГА!) В конечном итоге не будут обнаружены поймать все правильно?

//my routes

router
  .route('/')
  .get(function(req, res, next) {
    return UserModel.find({}, function(err, users) {
      if (err) next(err);
      res.json(users);
    }).exec();
  })
  .post(async (req, res) => {
    var newUser = new UserModel({
      username: req.email,
      password: req.password
    });
    newUser.save(function(err, user) {
      res.json(user);
    });
  });

router.route('/:id').get(function(req, res) {
  return UserModel.findById(req.params.id)
    .then(user => {
      if (!user) {
        return res.status(404).end();
      }
      return res.status(200).json(user);
    })
    .catch(err => next(err));
});


// error handler

function errorHandler(err, req, res, next) {
  // Set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // Log error
  console.error(err.stack);

  // Render the error page
  res.status(err.status || 500);

  // Default error message by HTTP code
  res.render('error', {
    title: HttpStatus.getStatusText(err.status),
    message: HttpStatus.getStatusText(err.status)
  });
}

// then pass errorHandler in this catch all

 app.use(errorHandler, function(error, req, res, next) {
  res.json({ message: error.message });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...