]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
chore(compiler-sfc): gracefully handle failed parse when analyzing bindings
authorEvan You <yyx990803@gmail.com>
Tue, 15 Sep 2020 02:10:23 +0000 (22:10 -0400)
committerEvan You <yyx990803@gmail.com>
Tue, 15 Sep 2020 02:10:23 +0000 (22:10 -0400)
packages/compiler-sfc/src/compileScript.ts

index c74a3fdd8f025f94ec3e7892d1a229b7bdd9e83e..45b754123fdaa3b7733a9daf0809a7a51b55887b 100644 (file)
@@ -1,7 +1,7 @@
 import MagicString from 'magic-string'
 import { BindingMetadata } from '@vue/compiler-core'
 import { SFCDescriptor, SFCScriptBlock } from './parse'
-import { parse, ParserPlugin } from '@babel/parser'
+import { parse, ParserPlugin, ParserOptions } from '@babel/parser'
 import { babelParserDefaultPlugins, generateCodeFrame } from '@vue/shared'
 import {
   Node,
@@ -72,15 +72,21 @@ export function compileScript(
       // do not process non js/ts script blocks
       return script
     }
-    const scriptAst = parse(script.content, {
-      plugins,
-      sourceType: 'module'
-    }).program.body
-    return {
-      ...script,
-      content: hasCssVars ? injectCssVarsCalls(sfc, plugins) : script.content,
-      bindings: analyzeScriptBindings(scriptAst),
-      scriptAst
+    try {
+      const scriptAst = parse(script.content, {
+        plugins,
+        sourceType: 'module'
+      }).program.body
+      return {
+        ...script,
+        content: hasCssVars ? injectCssVarsCalls(sfc, plugins) : script.content,
+        bindings: analyzeScriptBindings(scriptAst),
+        scriptAst
+      }
+    } catch (e) {
+      // silently fallback if parse fails since user may be using custom
+      // babel syntax
+      return script
     }
   }