From 70a622d433da42aeadc2f3c07fe4feadbcdca030 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 20 Sep 2024 13:29:52 +0100 Subject: [PATCH] fix(kit): try resolving module path from each node_modules dir --- packages/kit/src/module/install.ts | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/packages/kit/src/module/install.ts b/packages/kit/src/module/install.ts index ae9ca2b10b..e44140ee57 100644 --- a/packages/kit/src/module/install.ts +++ b/packages/kit/src/module/install.ts @@ -85,23 +85,26 @@ export async function loadNuxtModuleInstance (nuxtModule: string | NuxtModule, n // Import if input is string if (typeof nuxtModule === 'string') { - const paths = [join(nuxtModule, 'nuxt'), join(nuxtModule, 'module'), nuxtModule, join(nuxt.options.rootDir, nuxtModule)] let error: unknown - for (const path of paths) { - try { - const src = jiti.esmResolve(path) - nuxtModule = await jiti.import(src) as NuxtModule + const paths = [join(nuxtModule, 'nuxt'), join(nuxtModule, 'module'), nuxtModule, join(nuxt.options.rootDir, nuxtModule)] - // nuxt-module-builder generates a module.json with metadata including the version - const moduleMetadataPath = join(dirname(src), 'module.json') - if (existsSync(moduleMetadataPath)) { - buildTimeModuleMeta = JSON.parse(await fsp.readFile(moduleMetadataPath, 'utf-8')) + for (const parentURL of nuxt.options.modulesDir) { + for (const path of paths) { + try { + const src = jiti.esmResolve(path, { parentURL }) + nuxtModule = await jiti.import(src) as NuxtModule + + // nuxt-module-builder generates a module.json with metadata including the version + const moduleMetadataPath = join(dirname(src), 'module.json') + if (existsSync(moduleMetadataPath)) { + buildTimeModuleMeta = JSON.parse(await fsp.readFile(moduleMetadataPath, 'utf-8')) + } + break + } catch (_err: unknown) { + error = _err } - break - } catch (_err: unknown) { - error = _err - continue } + if (typeof nuxtModule !== 'string') { break } } if (typeof nuxtModule !== 'function' && error) { logger.error(`Error while importing module \`${nuxtModule}\`: ${error}`)