Spaces:
Sleeping
Sleeping
| ; | |
| /** | |
| * This will be removed in next versions as it is not handled in the babel-loader | |
| * See: https://github.com/geowarin/friendly-errors-webpack-plugin/issues/2 | |
| */ | |
| function cleanStackTrace(message) { | |
| return message | |
| .replace(/^\s*at\s.*:\d+:\d+[\s)]*\n/gm, ''); // at ... ...:x:y | |
| } | |
| function cleanMessage(message) { | |
| return message | |
| // match until the last semicolon followed by a space | |
| // this should match | |
| // linux => "(SyntaxError: )Unexpected token (5:11)" | |
| // windows => "(SyntaxError: C:/projects/index.js: )Unexpected token (5:11)" | |
| .replace(/^Module build failed.*:\s/, 'Syntax Error: ') | |
| // remove mini-css-extract-plugin loader tracing errors | |
| .replace(/^Syntax Error: ModuleBuildError:.*:\s/, '') | |
| // remove babel extra wording and path | |
| .replace(/^Syntax Error: SyntaxError: (([A-Z]:)?\/.*:\s)?/, 'Syntax Error: '); | |
| } | |
| function isBabelSyntaxError(e) { | |
| return e.name === 'ModuleBuildError' || e.name === 'ModuleBuildError' && | |
| e.message.indexOf('SyntaxError') >= 0; | |
| } | |
| function transform(error) { | |
| if (isBabelSyntaxError(error)) { | |
| return Object.assign({}, error, { | |
| message: cleanStackTrace(cleanMessage(error.message) + '\n'), | |
| severity: 1000, | |
| name: 'Syntax Error', | |
| }); | |
| } | |
| return error; | |
| } | |
| module.exports = transform; |