@@ -7,39 +7,53 @@ function cleanStackTrace (message) {
7
7
}
8
8
9
9
function isBabelSyntaxError ( e ) {
10
- // ModuleNotFoundError
11
- // ModuleBuildError
12
10
return e . name === 'ModuleBuildError' && e . message . indexOf ( 'SyntaxError' ) >= 0 ;
13
11
}
14
12
13
+ function isModuleNotFoundError ( e ) {
14
+ return e . name === 'ModuleNotFoundError'
15
+ && e . message . indexOf ( 'Module not found' ) === 0
16
+ && e . dependencies && e . dependencies . length ;
17
+ }
18
+
15
19
function formatMessage ( webpackError ) {
16
20
17
21
const error = extractError ( webpackError ) ;
18
22
if ( isBabelSyntaxError ( webpackError ) ) {
19
23
error . message = cleanStackTrace ( error . message + '\n' ) ;
24
+ error . type = 'babel-syntax-error' ;
25
+ error . severity = 1000 ;
26
+ } else if ( isModuleNotFoundError ( webpackError ) ) {
27
+ error . message = `Module not found ${ webpackError . dependencies [ 0 ] . request } ` ;
28
+ error . module = webpackError . dependencies [ 0 ] . request ;
29
+ error . type = 'module-not-found' ;
30
+ error . severity = 900 ;
31
+ } else {
32
+ error . severity = 0 ;
20
33
}
21
34
22
35
return error ;
23
36
}
24
37
25
38
function extractError ( e ) {
26
- if ( typeof e === "string" ) {
27
- return {
28
- message : e
29
- } ;
30
- }
39
+ return {
40
+ message : e . message ,
41
+ file : getFile ( e ) ,
42
+ origin : getOrigin ( e ) ,
43
+ name : e . name
44
+ } ;
45
+ }
31
46
32
- // if (e.chunk) {
33
- // text += "chunk " + (e.chunk.name || e.chunk.id) +
34
- // (e.chunk.hasRuntime() ? " [entry]" : e.chunk.isInitial() ? " [initial]" : "") + "\n";
35
- // }
36
- let file = null ;
47
+
48
+ function getFile ( e ) {
37
49
if ( e . file ) {
38
- file = e . file ;
50
+ return e . file ;
39
51
} else if ( e . module && e . module . readableIdentifier && typeof e . module . readableIdentifier === "function" ) {
40
- file = e . module . readableIdentifier ( requestShortener ) ;
52
+ return e . module . readableIdentifier ( requestShortener ) ;
41
53
}
54
+ }
42
55
56
+ function getOrigin ( e ) {
43
57
let origin = '' ;
44
58
if ( e . dependencies && e . origin ) {
45
59
origin += '\n @ ' + e . origin . readableIdentifier ( requestShortener ) ;
@@ -57,13 +71,7 @@ function extractError (e) {
57
71
origin += '\n @ ' + current . readableIdentifier ( requestShortener ) ;
58
72
}
59
73
}
60
-
61
- return {
62
- message : e . message ,
63
- file,
64
- origin,
65
- name : e . name
66
- } ;
74
+ return origin ;
67
75
}
68
76
69
77
module . exports = formatMessage ;
0 commit comments