diff --git a/packages/kit/src/module/define.ts b/packages/kit/src/module/define.ts index b832b43149..c1b75c1091 100644 --- a/packages/kit/src/module/define.ts +++ b/packages/kit/src/module/define.ts @@ -41,8 +41,7 @@ export function defineNuxtModule (definition: Mo if (uniqueKey) { nuxt.options._requiredModules = nuxt.options._requiredModules || {} if (nuxt.options._requiredModules[uniqueKey]) { - // TODO: Notify user if inline options is provided since will be ignored! - return + return false } nuxt.options._requiredModules[uniqueKey] = true } diff --git a/packages/kit/src/module/install.ts b/packages/kit/src/module/install.ts index 733bfe8ca6..7aa9fcc05c 100644 --- a/packages/kit/src/module/install.ts +++ b/packages/kit/src/module/install.ts @@ -9,7 +9,10 @@ export async function installModule (moduleToInstall: string | NuxtModule, _inli const { nuxtModule, inlineOptions } = await normalizeModule(moduleToInstall, _inlineOptions) // Call module - await nuxtModule(inlineOptions, nuxt) + const res = await nuxtModule(inlineOptions, nuxt) + if (res === false /* setup aborted */) { + return + } if (typeof moduleToInstall === 'string') { nuxt.options.build.transpile.push(moduleToInstall) diff --git a/packages/schema/src/types/module.ts b/packages/schema/src/types/module.ts index 528a2f4978..b14e246cb8 100644 --- a/packages/schema/src/types/module.ts +++ b/packages/schema/src/types/module.ts @@ -36,8 +36,9 @@ export interface ModuleDefinition { } /** Nuxt modules are always a simple function. */ +type Awaitable = T | Promise export interface NuxtModule { - (this: void, inlineOptions: T, nuxt: Nuxt): void | Promise + (this: void, inlineOptions: T, nuxt: Nuxt): Awaitable getOptions?: (inlineOptions?: T, nuxt?: Nuxt) => Promise getMeta?: () => Promise }