]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(vapor): properly handle return when compiling vapor component for ssr
authorEvan You <evan@vuejs.org>
Tue, 11 Mar 2025 11:05:46 +0000 (19:05 +0800)
committerEvan You <evan@vuejs.org>
Tue, 11 Mar 2025 11:05:46 +0000 (19:05 +0800)
packages/compiler-sfc/src/compileScript.ts

index 15219ec092806714ae7df6d8af63cd749bceebe9..7fbb0b115cdba0c311aa086a137580b16416e259 100644 (file)
@@ -175,6 +175,7 @@ export function compileScript(
   const scriptLang = script && script.lang
   const scriptSetupLang = scriptSetup && scriptSetup.lang
   const vapor = sfc.vapor || options.vapor
+  const ssr = options.templateOptions?.ssr
 
   if (!scriptSetup) {
     if (!script) {
@@ -749,7 +750,7 @@ export function compileScript(
   if (
     sfc.cssVars.length &&
     // no need to do this when targeting SSR
-    !options.templateOptions?.ssr
+    !ssr
   ) {
     ctx.helperImports.add(CSS_VARS_HELPER)
     ctx.helperImports.add('unref')
@@ -859,7 +860,7 @@ export function compileScript(
   } else {
     // inline mode
     if (sfc.template && !sfc.template.src) {
-      if (options.templateOptions && options.templateOptions.ssr) {
+      if (ssr) {
         hasInlinedSsrRenderFn = true
       }
       // inline render function mode - we are going to compile the template and
@@ -933,7 +934,7 @@ export function compileScript(
     ctx.s.appendRight(
       endOffset,
       // vapor mode generates its own return when inlined
-      `\n${vapor ? `` : `return `}${returned}\n}\n\n`,
+      `\n${vapor && !ssr ? `` : `return `}${returned}\n}\n\n`,
     )
   }