diff --git a/src/app.ts b/src/app.ts index 4d02f79e..b8a1a759 100644 --- a/src/app.ts +++ b/src/app.ts @@ -2,6 +2,7 @@ import express from "express"; import { unknownEndpointHandler } from "@/src/middleware/middleware"; import { requestLogger } from "@/src/middleware/morgenMiddleware"; +import { errorHandler } from "@/src/middleware/errorHandler"; import { apiRouter } from "@/src/routes/api"; //import { testRouter } from "@/src/routes/test"; @@ -20,7 +21,7 @@ app.use(bodyParser.raw()); app.use(express.json()); app.use(bodyParser.text()); app.use(requestLogger); -//app.use(requestLogger); +app.use(errorHandler); app.use("/api", apiRouter); //app.use("/test", testRouter); diff --git a/src/middleware/errorHandler.ts b/src/middleware/errorHandler.ts new file mode 100644 index 00000000..f4669e1f --- /dev/null +++ b/src/middleware/errorHandler.ts @@ -0,0 +1,14 @@ +import { NextFunction, Request, Response } from "express"; +import { logger } from "../utils/logger"; + +export const errorHandler = (err: Error, req: Request, res: Response, _next: NextFunction): void => { + if (err.stack) { + const stackArr = err.stack.split("\n"); + stackArr[0] += ` while processing ${req.path} request`; + logger.error(stackArr.join("\n")); + res.status(500).end(); + } else { + logger.error(`uncaught error while processing ${req.path} request: ${err.message}`); + res.status(500).end(); + } +};