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,15 +72,21 @@ export function compileScript(
// do not process non js/ts script blocks // do not process non js/ts script blocks
return script return script
} }
const scriptAst = parse(script.content, { try {
plugins, const scriptAst = parse(script.content, {
sourceType: 'module' plugins,
}).program.body sourceType: 'module'
return { }).program.body
...script, return {
content: hasCssVars ? injectCssVarsCalls(sfc, plugins) : script.content, ...script,
bindings: analyzeScriptBindings(scriptAst), content: hasCssVars ? injectCssVarsCalls(sfc, plugins) : script.content,
scriptAst bindings: analyzeScriptBindings(scriptAst),
scriptAst
}
} catch (e) {
// silently fallback if parse fails since user may be using custom
// babel syntax
return script
} }
} }