Skip to content

Commit fe822fe

Browse files
committed
wip(vue3): enhance error handling
1 parent e31bfd9 commit fe822fe

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/createVue3SFCModule.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import babelPluginTransformModulesCommonjs from '@babel/plugin-transform-modules
3030

3131
import {
3232
formatErrorLineColumn,
33+
formatError,
3334
withCache,
3435
hash,
3536
renameDynamicImport,
@@ -115,7 +116,6 @@ export async function createSFCModule(source : string, filename : string, option
115116
preprocessCustomRequire: id => moduleCache[id], // makes consolidate optional, see https://github.com/vuejs/vue-next/blob/15baaf14f025f6b1d46174c9713a2ec517741d0d/packages/compiler-sfc/src/compileTemplate.ts#L111-L113
116117
} : null;
117118

118-
119119
if ( descriptor.script || descriptor.scriptSetup ) {
120120

121121
// eg: https://github.com/vuejs/vue-loader/blob/6ed553f70b163031457acc961901313390cde9ef/src/index.ts#L136
@@ -200,9 +200,15 @@ export async function createSFCModule(source : string, filename : string, option
200200

201201
preventCache();
202202
for ( const err of template.errors ) {
203-
204-
// @ts-ignore (Property 'message' does not exist on type 'string | CompilerError')
205-
log?.('error', 'SFC template', formatErrorLineColumn(err.message, filename, source, err.loc.start.line + descriptor.template.loc.start.line - 1, err.loc.start.column) );
203+
if (typeof err === 'object') {
204+
if (err.loc) {
205+
log?.('error', 'SFC template', formatErrorLineColumn(err.message, filename, source, err.loc.start.line + descriptor.template.loc.start.line - 1, err.loc.start.column) );
206+
} else {
207+
log?.('error', 'SFC template', formatError(err.message, filename, source) );
208+
}
209+
} else {
210+
log?.('error', 'SFC template', formatError(err, filename, source) );
211+
}
206212
}
207213
}
208214

0 commit comments

Comments
 (0)