From 3a4abb10cb2aed5ffb4cceca7bdf8798f3f996ba Mon Sep 17 00:00:00 2001 From: daedalus <44623501+ComfortablyCoding@users.noreply.github.com> Date: Tue, 31 Oct 2023 21:19:19 -0400 Subject: [PATCH] fix: extension auto-load crashes directus if local extension is removed (#20259) --- .changeset/lucky-tables-leave.md | 5 +++++ api/src/utils/delete-from-require-cache.ts | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 .changeset/lucky-tables-leave.md diff --git a/.changeset/lucky-tables-leave.md b/.changeset/lucky-tables-leave.md new file mode 100644 index 0000000000..9eb091fced --- /dev/null +++ b/.changeset/lucky-tables-leave.md @@ -0,0 +1,5 @@ +--- +'@directus/api': patch +--- + +Fixed an issue where removing a local extension with autoload true resulted in a crash. diff --git a/api/src/utils/delete-from-require-cache.ts b/api/src/utils/delete-from-require-cache.ts index 5be3ca8414..832cad9ec9 100644 --- a/api/src/utils/delete-from-require-cache.ts +++ b/api/src/utils/delete-from-require-cache.ts @@ -1,7 +1,13 @@ import { createRequire } from 'node:module'; +import logger from '../logger.js'; const require = createRequire(import.meta.url); export function deleteFromRequireCache(modulePath: string): void { - delete require.cache[require.resolve(modulePath)]; + try { + const moduleCachePath = require.resolve(modulePath); + delete require.cache[moduleCachePath]; + } catch (error) { + logger.trace(`Module cache not found for ${modulePath}, skipped cache delete.`); + } }