fix(compiler-sfc): register exported bindings in normal script when using script setup (#4601)
fix #4600
This commit is contained in:
parent
cab9541ffd
commit
8055445b68
@ -11,7 +11,7 @@ export default {
|
||||
|
||||
x()
|
||||
|
||||
return { x }
|
||||
return { n, x }
|
||||
}
|
||||
|
||||
}"
|
||||
@ -26,7 +26,7 @@ export default {
|
||||
|
||||
x()
|
||||
|
||||
return { x }
|
||||
return { n, x }
|
||||
}
|
||||
|
||||
}
|
||||
@ -66,7 +66,7 @@ function setup(__props, { expose }) {
|
||||
|
||||
x()
|
||||
|
||||
return { x }
|
||||
return { n, x }
|
||||
}
|
||||
|
||||
|
||||
@ -87,7 +87,7 @@ function setup(__props, { expose }) {
|
||||
|
||||
x()
|
||||
|
||||
return { x }
|
||||
return { n, x }
|
||||
}
|
||||
|
||||
|
||||
|
@ -1295,6 +1295,20 @@ describe('SFC analyze <script> bindings', () => {
|
||||
expect(bindings!.__isScriptSetup).toBe(false)
|
||||
})
|
||||
|
||||
it('recognizes exported vars', () => {
|
||||
const { bindings } = compile(`
|
||||
<script>
|
||||
export const foo = 2
|
||||
</script>
|
||||
<script setup>
|
||||
console.log(foo)
|
||||
</script>
|
||||
`)
|
||||
expect(bindings).toStrictEqual({
|
||||
foo: BindingTypes.SETUP_CONST
|
||||
})
|
||||
})
|
||||
|
||||
it('recognizes async setup return', () => {
|
||||
const { bindings } = compile(`
|
||||
<script>
|
||||
|
@ -702,7 +702,7 @@ export function compileScript(
|
||||
const start = node.start! + scriptStartOffset!
|
||||
const end = node.declaration.start! + scriptStartOffset!
|
||||
s.overwrite(start, end, `const ${defaultTempVar} = `)
|
||||
} else if (node.type === 'ExportNamedDeclaration' && node.specifiers) {
|
||||
} else if (node.type === 'ExportNamedDeclaration') {
|
||||
const defaultSpecifier = node.specifiers.find(
|
||||
s => s.exported.type === 'Identifier' && s.exported.name === 'default'
|
||||
) as ExportSpecifier
|
||||
@ -735,6 +735,9 @@ export function compileScript(
|
||||
)
|
||||
}
|
||||
}
|
||||
if (node.declaration) {
|
||||
walkDeclaration(node.declaration, setupBindings, userImportAlias)
|
||||
}
|
||||
} else if (
|
||||
(node.type === 'VariableDeclaration' ||
|
||||
node.type === 'FunctionDeclaration' ||
|
||||
|
Loading…
Reference in New Issue
Block a user