From 065cc88f5d1c05ecb4b2b4e58004dce1dd916203 Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Mon, 29 Jun 2020 13:09:56 -0400 Subject: [PATCH] Move error handler to middleware --- src/middleware/error-handler.ts | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/middleware/error-handler.ts diff --git a/src/middleware/error-handler.ts b/src/middleware/error-handler.ts new file mode 100644 index 0000000000..fcdae8b970 --- /dev/null +++ b/src/middleware/error-handler.ts @@ -0,0 +1,43 @@ +import { ErrorRequestHandler } from 'express'; +import { BaseException } from '../exceptions'; +import logger from '../logger'; + +const errorHandler: ErrorRequestHandler = (err, req, res, next) => { + if (err instanceof BaseException) { + logger.debug(err); + + res.status(err.status); + + const payload: any = { + error: { + code: err.code, + message: err.message, + }, + }; + + if (process.env.NODE_ENV === 'development') { + payload.error.stack = err.stack; + } + + return res.json(payload); + } else { + logger.error(err); + + res.status(500); + + const payload: any = { + error: { + code: 'INTERNAL_SERVER_ERROR', + message: err.message, + }, + }; + + if (process.env.NODE_ENV === 'development') { + payload.error.stack = err.stack; + } + + return res.json(payload); + } +}; + +export default errorHandler;