From 81e0f4c021b4d2b41b39c381fece7d8fd3f6be4d Mon Sep 17 00:00:00 2001 From: Brainslug Date: Wed, 6 Mar 2024 20:30:26 +0100 Subject: [PATCH] Fix email template loading (#21718) * ugly exception for templates * Ignore folders that aren't valid extensions * Add changeset * Don't double-loop * Super small polishing --------- Co-authored-by: Rijk van Zanten Co-authored-by: Pascal Jufer --- .changeset/tough-pigs-beg.md | 5 +++++ packages/extensions/src/node/utils/get-extensions.ts | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 .changeset/tough-pigs-beg.md diff --git a/.changeset/tough-pigs-beg.md b/.changeset/tough-pigs-beg.md new file mode 100644 index 0000000000..f73e4f971b --- /dev/null +++ b/.changeset/tough-pigs-beg.md @@ -0,0 +1,5 @@ +--- +'@directus/extensions': patch +--- + +Fixed an issue that would cause extensions loading to fail when non-extension folders were included in the extensions folder diff --git a/packages/extensions/src/node/utils/get-extensions.ts b/packages/extensions/src/node/utils/get-extensions.ts index 8a55875089..4ae6b8e363 100644 --- a/packages/extensions/src/node/utils/get-extensions.ts +++ b/packages/extensions/src/node/utils/get-extensions.ts @@ -80,14 +80,19 @@ export async function resolveFsExtensions(root: string): Promise = await fse.readJSON(join(path, 'package.json')); return { name: folder, path, manifest }; } catch { - throw new Error(`Extension "${folder}" (${path}) does not contain a package.json file.`); + // Ignore invalid extensions or non-extension folders + return; } }), ); const extensions = new Map(); - for (const { name, path, manifest } of extensionMap.values()) { + for (const extension of extensionMap.values()) { + if (!extension) continue; + + const { name, path, manifest } = extension; + let parsedManifest; try {