http-error-handler.js 685 B

1234567891011121314151617181920212223242526272829303132
  1. const { HttpError } = require('../../../node_modules/http-errors');
  2. const isHttpError = (val) => {
  3. if (!val || typeof val !== 'object') {
  4. return false;
  5. }
  6. if (val instanceof HttpError) {
  7. return true;
  8. }
  9. return val instanceof Error
  10. && typeof val.expose === 'boolean'
  11. && typeof val.statusCode === 'number'
  12. && val.status === val.statusCode;
  13. };
  14. module.exports = async(err, req, res, next) => {
  15. // handle if the err is a HttpError instance
  16. if (isHttpError(err)) {
  17. const httpError = err;
  18. return res
  19. .status(httpError.status)
  20. .send({
  21. status: httpError.status,
  22. message: httpError.message,
  23. });
  24. }
  25. next(err);
  26. };