workflow: make template-explorer error tolerant

This commit is contained in:
Evan You 2019-10-08 17:31:22 -04:00
parent 0615cf0108
commit 723dc8791b
1 changed files with 19 additions and 17 deletions

View File

@ -25,13 +25,20 @@ window.init = () => {
function compileCode(source: string): string { function compileCode(source: string): string {
console.clear() console.clear()
try { try {
const errors: CompilerError[] = []
const { code, ast, map } = compile(source, { const { code, ast, map } = compile(source, {
filename: 'template.vue', filename: 'template.vue',
...compilerOptions, ...compilerOptions,
sourceMap: true, sourceMap: true,
onError: displayError onError: err => {
errors.push(err)
}
}) })
monaco.editor.setModelMarkers(editor.getModel()!, `@vue/compiler-dom`, []) monaco.editor.setModelMarkers(
editor.getModel()!,
`@vue/compiler-dom`,
errors.filter(e => e.loc).map(formatError)
)
console.log(`AST: `, ast) console.log(`AST: `, ast)
lastSuccessfulCode = code + `\n\n// Check the console for the AST` lastSuccessfulCode = code + `\n\n// Check the console for the AST`
lastSuccessfulMap = new window._deps['source-map'].SourceMapConsumer(map) lastSuccessfulMap = new window._deps['source-map'].SourceMapConsumer(map)
@ -42,22 +49,17 @@ window.init = () => {
return lastSuccessfulCode return lastSuccessfulCode
} }
function displayError(err: CompilerError) { function formatError(err: CompilerError) {
const loc = err.loc const loc = err.loc!
if (loc) { return {
monaco.editor.setModelMarkers(editor.getModel()!, `@vue/compiler-dom`, [ severity: monaco.MarkerSeverity.Error,
{ startLineNumber: loc.start.line,
severity: monaco.MarkerSeverity.Error, startColumn: loc.start.column,
startLineNumber: loc.start.line, endLineNumber: loc.end.line,
startColumn: loc.start.column, endColumn: loc.end.column,
endLineNumber: loc.end.line, message: `Vue template compilation error: ${err.message}`,
endColumn: loc.end.column, code: String(err.code)
message: `Vue template compilation error: ${err.message}`,
code: String(err.code)
}
])
} }
throw err
} }
function reCompile() { function reCompile() {