@@ -56,7 +56,13 @@ import { DEFINE_EXPOSE, processDefineExpose } from './script/defineExpose'
5656import { DEFINE_OPTIONS , processDefineOptions } from './script/defineOptions'
5757import { DEFINE_SLOTS , processDefineSlots } from './script/defineSlots'
5858import { DEFINE_MODEL , processDefineModel } from './script/defineModel'
59- import { getImportedName , isCallOf , isLiteralNode } from './script/utils'
59+ import {
60+ getImportedName ,
61+ isCallOf ,
62+ isJS ,
63+ isLiteralNode ,
64+ isTS ,
65+ } from './script/utils'
6066import { analyzeScriptBindings } from './script/analyzeScriptBindings'
6167import { isImportUsed } from './script/importUsageCheck'
6268import { processAwait } from './script/topLevelAwait'
@@ -173,6 +179,8 @@ export function compileScript(
173179 const scopeId = options . id ? options . id . replace ( / ^ d a t a - v - / , '' ) : ''
174180 const scriptLang = script && script . lang
175181 const scriptSetupLang = scriptSetup && scriptSetup . lang
182+ const isJSOrTS =
183+ isJS ( scriptLang , scriptSetupLang ) || isTS ( scriptLang , scriptSetupLang )
176184
177185 if ( script && scriptSetup && scriptLang !== scriptSetupLang ) {
178186 throw new Error (
@@ -181,21 +189,28 @@ export function compileScript(
181189 )
182190 }
183191
184- const ctx = new ScriptCompileContext ( sfc , options )
185-
186192 if ( ! scriptSetup ) {
187193 if ( ! script ) {
188194 throw new Error ( `[@vue/compiler-sfc] SFC contains no <script> tags.` )
189195 }
196+
190197 // normal <script> only
198+ if ( script . lang && ! isJSOrTS ) {
199+ // do not process non js/ts script blocks
200+ return script
201+ }
202+
203+ const ctx = new ScriptCompileContext ( sfc , options )
191204 return processNormalScript ( ctx , scopeId )
192205 }
193206
194- if ( scriptSetupLang && ! ctx . isJS && ! ctx . isTS ) {
207+ if ( scriptSetupLang && ! isJSOrTS ) {
195208 // do not process non js/ts script blocks
196209 return scriptSetup
197210 }
198211
212+ const ctx = new ScriptCompileContext ( sfc , options )
213+
199214 // metadata that needs to be returned
200215 // const ctx.bindingMetadata: BindingMetadata = {}
201216 const scriptBindings : Record < string , BindingTypes > = Object . create ( null )
0 commit comments