mirror of
https://github.com/nuxt/nuxt.git
synced 2025-02-25 10:08:29 +00:00
perf(kit): try non-subpath routes first to resolve nuxt modules (#31037)
This commit is contained in:
parent
aac000061b
commit
b7700f8614
@ -93,6 +93,8 @@ export async function loadNuxtModuleInstance (nuxtModule: string | NuxtModule, n
|
|||||||
|
|
||||||
const jiti = createJiti(nuxt.options.rootDir, { alias: nuxt.options.alias })
|
const jiti = createJiti(nuxt.options.rootDir, { alias: nuxt.options.alias })
|
||||||
|
|
||||||
|
let resolvedNuxtModule: NuxtModule<any> | undefined
|
||||||
|
let hadNonFunctionPath = false
|
||||||
// Import if input is string
|
// Import if input is string
|
||||||
if (typeof nuxtModule === 'string') {
|
if (typeof nuxtModule === 'string') {
|
||||||
const paths = new Set<string>()
|
const paths = new Set<string>()
|
||||||
@ -102,9 +104,9 @@ export async function loadNuxtModuleInstance (nuxtModule: string | NuxtModule, n
|
|||||||
nuxtModule = resolve(nuxt.options.rootDir, nuxtModule)
|
nuxtModule = resolve(nuxt.options.rootDir, nuxtModule)
|
||||||
}
|
}
|
||||||
|
|
||||||
paths.add(join(nuxtModule, 'nuxt'))
|
|
||||||
paths.add(join(nuxtModule, 'module'))
|
|
||||||
paths.add(nuxtModule)
|
paths.add(nuxtModule)
|
||||||
|
paths.add(join(nuxtModule, 'module'))
|
||||||
|
paths.add(join(nuxtModule, 'nuxt'))
|
||||||
|
|
||||||
for (const path of paths) {
|
for (const path of paths) {
|
||||||
try {
|
try {
|
||||||
@ -114,9 +116,17 @@ export async function loadNuxtModuleInstance (nuxtModule: string | NuxtModule, n
|
|||||||
url: nuxt.options.modulesDir.map(m => directoryToURL(m.replace(/\/node_modules\/?$/, '/'))),
|
url: nuxt.options.modulesDir.map(m => directoryToURL(m.replace(/\/node_modules\/?$/, '/'))),
|
||||||
extensions: nuxt.options.extensions,
|
extensions: nuxt.options.extensions,
|
||||||
})
|
})
|
||||||
|
|
||||||
nuxtModule = await jiti.import(src, { default: true }) as NuxtModule
|
|
||||||
resolvedModulePath = fileURLToPath(new URL(src))
|
resolvedModulePath = fileURLToPath(new URL(src))
|
||||||
|
if (!existsSync(resolvedModulePath)) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
const instance = await jiti.import(src, { default: true }) as NuxtModule
|
||||||
|
// ignore possible barrel exports
|
||||||
|
if (typeof instance !== 'function') {
|
||||||
|
hadNonFunctionPath = true
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
resolvedNuxtModule = instance
|
||||||
|
|
||||||
// nuxt-module-builder generates a module.json with metadata including the version
|
// nuxt-module-builder generates a module.json with metadata including the version
|
||||||
const moduleMetadataPath = new URL('module.json', src)
|
const moduleMetadataPath = new URL('module.json', src)
|
||||||
@ -141,17 +151,20 @@ export async function loadNuxtModuleInstance (nuxtModule: string | NuxtModule, n
|
|||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
resolvedNuxtModule = nuxtModule
|
||||||
}
|
}
|
||||||
|
|
||||||
// Throw error if module could not be found
|
if (!resolvedNuxtModule) {
|
||||||
if (typeof nuxtModule === 'string') {
|
// Module was resolvable but returned a non-function
|
||||||
throw new TypeError(`Could not load \`${nuxtModule}\`. Is it installed?`)
|
if (hadNonFunctionPath) {
|
||||||
|
throw new TypeError(`Nuxt module should be a function: ${nuxtModule}.`)
|
||||||
|
}
|
||||||
|
// Throw error if module could not be found
|
||||||
|
if (typeof nuxtModule === 'string') {
|
||||||
|
throw new TypeError(`Could not load \`${nuxtModule}\`. Is it installed?`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Throw error if input is not a function
|
return { nuxtModule: resolvedNuxtModule, buildTimeModuleMeta, resolvedModulePath } as { nuxtModule: NuxtModule<any>, buildTimeModuleMeta: ModuleMeta, resolvedModulePath?: string }
|
||||||
if (typeof nuxtModule !== 'function') {
|
|
||||||
throw new TypeError('Nuxt module should be a function: ' + nuxtModule)
|
|
||||||
}
|
|
||||||
|
|
||||||
return { nuxtModule, buildTimeModuleMeta, resolvedModulePath } as { nuxtModule: NuxtModule<any>, buildTimeModuleMeta: ModuleMeta, resolvedModulePath?: string }
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user