diff --git a/packages/vue-language-core/src/parsers/scriptSetupRanges.ts b/packages/vue-language-core/src/parsers/scriptSetupRanges.ts
index 86b15e358..053422477 100644
--- a/packages/vue-language-core/src/parsers/scriptSetupRanges.ts
+++ b/packages/vue-language-core/src/parsers/scriptSetupRanges.ts
@@ -44,7 +44,14 @@ export function parseScriptSetupRanges(
// fix https://github.com/vuejs/language-tools/issues/1223
&& !ts.isImportEqualsDeclaration(node)
) {
- importSectionEndOffset = node.getStart(ast, true);
+ const commentRagnes = ts.getLeadingCommentRanges(ast.getFullText(), node.getFullStart());
+ if (commentRagnes?.length) {
+ const commentRange = commentRagnes.sort((a, b) => a.pos - b.pos)[0];
+ importSectionEndOffset = commentRange.pos;
+ }
+ else {
+ importSectionEndOffset = node.getStart(ast);
+ }
foundNonImportExportNode = true;
}
});
diff --git a/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/import.vue b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/import.vue
new file mode 100644
index 000000000..72873e7d1
--- /dev/null
+++ b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/import.vue
@@ -0,0 +1,11 @@
+
+
+
+ {{ msg }}
+
\ No newline at end of file
diff --git a/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/main.vue b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/main.vue
new file mode 100644
index 000000000..1b0431856
--- /dev/null
+++ b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/main.vue
@@ -0,0 +1,4 @@
+