1
- const { red, gray } = require ( 'kleur' ) ;
1
+ const { red } = require ( 'kleur' ) ;
2
2
const { resolve } = require ( 'path' ) ;
3
3
const { readFileSync } = require ( 'fs' ) ;
4
4
const stackTrace = require ( 'stack-trace' ) ;
5
5
const { SourceMapConsumer } = require ( 'source-map' ) ;
6
6
const { error, info } = require ( '../../util' ) ;
7
7
const outdent = require ( 'outdent' ) ;
8
+ const { codeFrameColumns } = require ( '@babel/code-frame' ) ;
8
9
9
10
module . exports = function prerender ( env , params ) {
10
11
params = params || { } ;
@@ -95,15 +96,14 @@ async function handlePrerenderError(err, env, stack, entry) {
95
96
}
96
97
97
98
if ( position ) {
98
- info ( position . source ) ;
99
+ info ( JSON . stringify ( position ) ) ;
99
100
position . source = position . source
100
101
. replace ( 'webpack://' , '.' )
101
102
. replace ( / ^ .* ~ \/ ( (?: @ [ ^ / ] + \/ ) ? [ ^ / ] + ) / , ( s , name ) =>
102
103
require
103
104
. resolve ( name )
104
105
. replace ( / ^ ( .* ?\/ n o d e _ m o d u l e s \/ ( @ [ ^ / ] + \/ ) ? [ ^ / ] + ) ( \/ .* ) $ / , '$1' )
105
106
) ;
106
- info ( position . source ) ;
107
107
} else {
108
108
position = {
109
109
source : stack . getFileName ( ) ,
@@ -114,24 +114,13 @@ async function handlePrerenderError(err, env, stack, entry) {
114
114
115
115
const sourceLines = getLines ( env , position ) ;
116
116
117
- let sourceCodeHighlight = '' ;
118
- if ( sourceLines ) {
119
- const lnrl = position . line . toString ( ) . length + 2 ;
120
- const line = position . line ;
121
- const un = undefined ;
122
-
123
- const pad = l =>
124
- ( l === undefined ? '' : ( line + l || '' ) + '' ) . padStart ( lnrl ) ;
125
-
126
- sourceCodeHighlight = gray ( outdent `
127
- ${ pad ( - 2 ) } | ${ sourceLines [ line - 3 ] || '' }
128
- ${ pad ( - 1 ) } | ${ sourceLines [ line - 2 ] || '' }
129
- ${ pad ( - 0 ) } | ${ sourceLines [ line - 1 ] || '' }
130
- ${ pad ( un ) } | ${ red ( '^' . padStart ( position . column + 1 ) ) }
131
- ${ pad ( + 1 ) } | ${ sourceLines [ line + 0 ] || '' }
132
- ${ pad ( + 2 ) } | ${ sourceLines [ line + 1 ] || '' }
133
- ` ) ;
134
- }
117
+ let sourceCodeHighlight = sourceLines
118
+ ? codeFrameColumns (
119
+ sourceLines . join ( '\n' ) ,
120
+ { start : { line : position . line , column : position . column } } ,
121
+ { highlightCode : true }
122
+ )
123
+ : '' ;
135
124
136
125
const stderr = process . stderr . write . bind ( process . stderr ) ;
137
126
0 commit comments