chore: continue execution if subsequent JSON.parse on config failed
All checks were successful
Build / build (pull_request) Successful in 57s

By calling JSON.parse before setting everything to undefined, we don't lose the old config in case of an error.
This commit is contained in:
Sainan 2025-06-29 19:45:23 +02:00
parent 8c19aec340
commit 55308eda60
2 changed files with 5 additions and 3 deletions

View File

@ -103,11 +103,13 @@ export const config: IConfig = {
}; };
export const loadConfig = (): void => { export const loadConfig = (): void => {
const newConfig = JSON.parse(fs.readFileSync(configPath, "utf-8")) as IConfig;
// Set all values to undefined now so if the new config.json omits some fields that were previously present, it's correct in-memory. // Set all values to undefined now so if the new config.json omits some fields that were previously present, it's correct in-memory.
for (const key of Object.keys(config)) { for (const key of Object.keys(config)) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
(config as any)[key] = undefined; (config as any)[key] = undefined;
} }
Object.assign(config, JSON.parse(fs.readFileSync(configPath, "utf-8"))); Object.assign(config, newConfig);
}; };

View File

@ -14,8 +14,8 @@ chokidar.watch(configPath).on("change", () => {
try { try {
loadConfig(); loadConfig();
} catch (e) { } catch (e) {
logger.error("FATAL ERROR: Config failed to be reloaded: " + (e as Error).message); logger.error("Config changes were not applied: " + (e as Error).message);
process.exit(1); return;
} }
validateConfig(); validateConfig();
syncConfigWithDatabase(); syncConfigWithDatabase();