From d35e76737b1c06055ead68f9dafe6f993a0378be Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 15 Jul 2026 13:30:22 +0200 Subject: [PATCH] Task/improve error handling in HTML template middleware (#7331) * Improve error handling * Update changelog --- CHANGELOG.md | 1 + .../middlewares/html-template.middleware.ts | 38 ++++++++++++------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e218513b7..1e6176b26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Resolved a startup error in data gathering caused by uninitialized data provider mappings +- Improved the error handling in the `HtmlTemplateMiddleware` - Improved the error handling in the get quotes functionality of the _Financial Modeling Prep_ service ## 3.26.0 - 2026-07-14 diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index 325f64eaa..bdace3402 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -97,20 +97,29 @@ export class HtmlTemplateMiddleware implements NestMiddleware { private indexHtmlMap: { [languageCode: string]: string } = {}; public constructor(private readonly i18nService: I18nService) { - try { - this.indexHtmlMap = SUPPORTED_LANGUAGE_CODES.reduce( - (map, languageCode) => ({ - ...map, - [languageCode]: readFileSync( - join(__dirname, '..', 'client', languageCode, 'index.html'), - 'utf8' - ) - }), - {} - ); - } catch (error) { - this.logger.error('Failed to initialize index HTML map', error); + if (!environment.production) { + return; } + + this.indexHtmlMap = SUPPORTED_LANGUAGE_CODES.reduce((map, languageCode) => { + const indexHtmlPath = join( + __dirname, + '..', + 'client', + languageCode, + 'index.html' + ); + + try { + map[languageCode] = readFileSync(indexHtmlPath, 'utf8'); + } catch { + this.logger.warn( + `Skipping language '${languageCode}': ${indexHtmlPath} not found` + ); + } + + return map; + }, {}); } public use(request: Request, response: Response, next: NextFunction) { @@ -118,7 +127,8 @@ export class HtmlTemplateMiddleware implements NestMiddleware { let languageCode = path.substr(1, 2); if ( - !(SUPPORTED_LANGUAGE_CODES as readonly string[]).includes(languageCode) + !(SUPPORTED_LANGUAGE_CODES as readonly string[]).includes(languageCode) || + !this.indexHtmlMap[languageCode] ) { languageCode = DEFAULT_LANGUAGE_CODE; }