diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts index e05b09a17f8..1faf74e3bbd 100644 --- a/packages/compiler-sfc/src/compileScript.ts +++ b/packages/compiler-sfc/src/compileScript.ts @@ -666,6 +666,7 @@ export function compileScript( let propsOption = undefined let emitsOption = undefined + let exposeOption = undefined if (optionsRuntimeDecl.type === 'ObjectExpression') { for (const prop of optionsRuntimeDecl.properties) { if ( @@ -674,6 +675,7 @@ export function compileScript( ) { if (prop.key.name === 'props') propsOption = prop if (prop.key.name === 'emits') emitsOption = prop + if (prop.key.name === 'expose') exposeOption = prop } } } @@ -690,6 +692,12 @@ export function compileScript( emitsOption ) } + if (exposeOption) { + error( + `${DEFINE_OPTIONS}() cannot be used to declare expose. Use ${DEFINE_EXPOSE}() instead.`, + exposeOption + ) + } return true } diff --git a/packages/runtime-core/src/apiSetupHelpers.ts b/packages/runtime-core/src/apiSetupHelpers.ts index 981e8d60a6a..bdda22e9398 100644 --- a/packages/runtime-core/src/apiSetupHelpers.ts +++ b/packages/runtime-core/src/apiSetupHelpers.ts @@ -169,7 +169,7 @@ export function defineOptions< Extends, E, EE - > & { emits?: undefined } + > & { emits?: undefined; expose?: undefined } ): void { if (__DEV__) { warnRuntimeUsage(`defineOptions`)