chore(compiler-sfc): gracefully handle failed parse when analyzing bindings

This commit is contained in:
Evan You 2020-09-14 22:10:23 -04:00
parent 273d19ad46
commit c67e78ab6f
1 changed files with 16 additions and 10 deletions

View File

@ -1,7 +1,7 @@
import MagicString from 'magic-string' import MagicString from 'magic-string'
import { BindingMetadata } from '@vue/compiler-core' import { BindingMetadata } from '@vue/compiler-core'
import { SFCDescriptor, SFCScriptBlock } from './parse' 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 { babelParserDefaultPlugins, generateCodeFrame } from '@vue/shared'
import { import {
Node, Node,
@ -72,6 +72,7 @@ export function compileScript(
// do not process non js/ts script blocks // do not process non js/ts script blocks
return script return script
} }
try {
const scriptAst = parse(script.content, { const scriptAst = parse(script.content, {
plugins, plugins,
sourceType: 'module' sourceType: 'module'
@ -82,6 +83,11 @@ export function compileScript(
bindings: analyzeScriptBindings(scriptAst), bindings: analyzeScriptBindings(scriptAst),
scriptAst scriptAst
} }
} catch (e) {
// silently fallback if parse fails since user may be using custom
// babel syntax
return script
}
} }
if (script && scriptLang !== scriptSetupLang) { if (script && scriptLang !== scriptSetupLang) {