From 0205c4eda55f4cc304c6276452aa7c758a87bbf1 Mon Sep 17 00:00:00 2001 From: wea_ondara Date: Sat, 25 Nov 2023 17:14:07 +0100 Subject: [PATCH] backend: added exception handler for requests --- backend/src/ExceptionHandler.ts | 15 +++++++++++++++ backend/src/main.ts | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 backend/src/ExceptionHandler.ts diff --git a/backend/src/ExceptionHandler.ts b/backend/src/ExceptionHandler.ts new file mode 100644 index 0000000..bfab22e --- /dev/null +++ b/backend/src/ExceptionHandler.ts @@ -0,0 +1,15 @@ +import {ErrorRequestHandler, NextFunction, Request, Response} from 'express'; + +export default function exceptionHandler(): ErrorRequestHandler { + return (err: any, req: Request, res: Response, next: NextFunction) => { + try { + console.error(err); + res.status(500).send('Internal server error: ' + err.message); + } catch (ex) { + console.error('Error in exception handler!'); + console.error(ex); + } finally { + next(); + } + }; +} \ No newline at end of file diff --git a/backend/src/main.ts b/backend/src/main.ts index 4c2e861..c2a1009 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -7,6 +7,7 @@ import {MangaUpdatesCache} from './cache/MangaUpdatesCache.js'; import * as fs from 'fs'; import {MangaDexCache} from './cache/MangaDexCache'; import mangaDexRouter from './router/MangaDexRouter'; +import exceptionHandler from './ExceptionHandler'; const config = JSON.parse(fs.readFileSync('config.json').toString()); @@ -26,6 +27,7 @@ app.use('/anilist', aniListRouter()); app.use('/mangadex', mangaDexRouter(mangaDexCache)); app.use('/mangaupdates', mangaUpdatesRouter(mangaUpdatesCache)); app.use(express.static('_client')); //for production +app.use(exceptionHandler()); //start app.listen(config.port, config.host, () => {