diff --git a/packages/gogocode-core/src/vue-core/core.js b/packages/gogocode-core/src/vue-core/core.js
index 6081cbdb..0cead2d4 100644
--- a/packages/gogocode-core/src/vue-core/core.js
+++ b/packages/gogocode-core/src/vue-core/core.js
@@ -21,7 +21,8 @@ const core = {
if (ast.scriptAst) {
newAst = ast.scriptAst;
} else {
- ast.scriptAst = core.getScript(ast, { parseOptions });
+ const isSetup = ast.scriptSetup && ast.scriptSetup.setup;
+ ast.scriptAst = core.getScript(ast, { isSetup, parseOptions });
newAst = ast.scriptAst;
}
} else if (selector == '') {
@@ -52,7 +53,7 @@ const core = {
return undefined;
}
},
- getScript(ast, { isSetup = false, parseOptions } = {} ) {
+ getScript(ast, { isSetup = false, parseOptions } = {}) {
// 仅针对vue,取script,后续通过jscore处理
let content;
if (isSetup && ast.scriptSetup) {
@@ -89,7 +90,7 @@ const core = {
} else {
return null;
}
- } catch(e) {
+ } catch (e) {
console.log('buildAstByAstStr failed:' + e)
}
}
diff --git a/packages/gogocode-core/test/G.vue.test.js b/packages/gogocode-core/test/G.vue.test.js
index 7f32c1a9..030b3e5a 100644
--- a/packages/gogocode-core/test/G.vue.test.js
+++ b/packages/gogocode-core/test/G.vue.test.js
@@ -635,3 +635,46 @@ test('test vue parseoptions', () => {
const res = ast.generate()
expect(res.match('&&')).toBeTruthy()
})
+
+
+test('test vue3 setup by script', () => {
+ const ast = $(
+ `
+ 1
+ 2
+
+
+
+ `,
+ { parseOptions: { language: 'vue' } }
+ )
+ const res = ast.find('').generate()
+ expect(res===`
+ const a = 1
+ const b = 2
+`).toBeTruthy()
+})
+
+test('test vue3 setup by script setup', () => {
+ const ast = $(
+ `
+ 1
+ 2
+
+
+
+ `,
+ { parseOptions: { language: 'vue' } }
+ )
+ const res = ast.find('').generate()
+ expect(res===`
+ const a = 1
+ const b = 2
+`).toBeTruthy()
+})
\ No newline at end of file