From acae1c52fd841effe112da1096a6d98d18aea42a Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 10 May 2023 12:54:20 +0100 Subject: [PATCH 1/3] fix(kit): prefer esm resolution for modules to install --- packages/kit/src/module/install.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/kit/src/module/install.ts b/packages/kit/src/module/install.ts index cd2ebea068e3..929a98d7e054 100644 --- a/packages/kit/src/module/install.ts +++ b/packages/kit/src/module/install.ts @@ -3,7 +3,7 @@ import type { Nuxt, NuxtModule } from '@nuxt/schema' import { dirname, isAbsolute } from 'pathe' import { isNuxt2 } from '../compatibility' import { useNuxt } from '../context' -import { requireModule, resolveModule } from '../internal/cjs' +import { requireModule } from '../internal/cjs' import { importModule } from '../internal/esm' import { resolveAlias } from '../resolve' @@ -53,12 +53,9 @@ async function normalizeModule (nuxtModule: string | NuxtModule, inlineOptions?: // Import if input is string if (typeof nuxtModule === 'string') { - const _src = resolveModule(resolveAlias(nuxtModule), { paths: nuxt.options.modulesDir }) - // TODO: also check with type: 'module' in closest `package.json` - const isESM = _src.endsWith('.mjs') - try { - nuxtModule = isESM ? await importModule(_src, nuxt.options.rootDir) : requireModule(_src) + // Prefer ESM resolution if possible + nuxtModule = await importModule(nuxtModule, nuxt.options.modulesDir).catch(() => null) ?? requireModule(resolveAlias(nuxtModule), { paths: nuxt.options.modulesDir }) } catch (error: unknown) { console.error(`Error while requiring module \`${nuxtModule}\`: ${error}`) throw error From ca0fa6d6d449914cf1c4742c32b8b9831e528f55 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 10 May 2023 12:55:10 +0100 Subject: [PATCH 2/3] fix: resolve alias first --- packages/kit/src/module/install.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/kit/src/module/install.ts b/packages/kit/src/module/install.ts index 929a98d7e054..88cf371da80f 100644 --- a/packages/kit/src/module/install.ts +++ b/packages/kit/src/module/install.ts @@ -53,9 +53,10 @@ async function normalizeModule (nuxtModule: string | NuxtModule, inlineOptions?: // Import if input is string if (typeof nuxtModule === 'string') { + const src = resolveAlias(nuxtModule) try { // Prefer ESM resolution if possible - nuxtModule = await importModule(nuxtModule, nuxt.options.modulesDir).catch(() => null) ?? requireModule(resolveAlias(nuxtModule), { paths: nuxt.options.modulesDir }) + nuxtModule = await importModule(src, nuxt.options.modulesDir).catch(() => null) ?? requireModule(src, { paths: nuxt.options.modulesDir }) } catch (error: unknown) { console.error(`Error while requiring module \`${nuxtModule}\`: ${error}`) throw error From 720399f90dc6f746964f506cc7e9e7935fdacb8d Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 10 May 2023 12:59:46 +0100 Subject: [PATCH 3/3] fix: normalize --- packages/kit/src/module/install.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kit/src/module/install.ts b/packages/kit/src/module/install.ts index 88cf371da80f..0cce50268050 100644 --- a/packages/kit/src/module/install.ts +++ b/packages/kit/src/module/install.ts @@ -1,6 +1,6 @@ import { lstatSync } from 'node:fs' import type { Nuxt, NuxtModule } from '@nuxt/schema' -import { dirname, isAbsolute } from 'pathe' +import { dirname, isAbsolute, normalize } from 'pathe' import { isNuxt2 } from '../compatibility' import { useNuxt } from '../context' import { requireModule } from '../internal/cjs' @@ -53,7 +53,7 @@ async function normalizeModule (nuxtModule: string | NuxtModule, inlineOptions?: // Import if input is string if (typeof nuxtModule === 'string') { - const src = resolveAlias(nuxtModule) + const src = normalize(resolveAlias(nuxtModule)) try { // Prefer ESM resolution if possible nuxtModule = await importModule(src, nuxt.options.modulesDir).catch(() => null) ?? requireModule(src, { paths: nuxt.options.modulesDir })