Viewing File: /home/ubuntu/efiexchange-node-base/src/shared/infra/http/middlewares/errorHandler.ts

import { isCelebrateError } from 'celebrate'
import { NextFunction, Request, Response } from 'express'

import * as Sentry from '@sentry/node'
import { HttpError } from '@shared/errors/HttpError'

export async function errorHandler(
  error: Error,
  request: Request,
  response: Response,
  _: NextFunction,
): Promise<Response> {
  if (isCelebrateError(error)) {
    return response.status(400).json({
      error: error.details.get('body')?.message,
    })
  }

  if (error instanceof HttpError) {
    return response.status(error.statusCode).json({
      error: error.message,
    })
  }

  Sentry.captureException(error)

  return response.status(500).json({
    error: 'Internal Server error!',
  })
}
Back to Directory File Manager