1- const { red, gray } = require ( 'kleur' ) ;
1+ const { red } = require ( 'kleur' ) ;
22const { resolve } = require ( 'path' ) ;
33const { readFileSync } = require ( 'fs' ) ;
44const stackTrace = require ( 'stack-trace' ) ;
55const { SourceMapConsumer } = require ( 'source-map' ) ;
66const { error, info } = require ( '../../util' ) ;
77const outdent = require ( 'outdent' ) ;
8+ const { codeFrameColumns } = require ( '@babel/code-frame' ) ;
89
910module . exports = function prerender ( env , params ) {
1011 params = params || { } ;
@@ -95,15 +96,14 @@ async function handlePrerenderError(err, env, stack, entry) {
9596 }
9697
9798 if ( position ) {
98- info ( position . source ) ;
99+ info ( JSON . stringify ( position ) ) ;
99100 position . source = position . source
100101 . replace ( 'webpack://' , '.' )
101102 . replace ( / ^ .* ~ \/ ( (?: @ [ ^ / ] + \/ ) ? [ ^ / ] + ) / , ( s , name ) =>
102103 require
103104 . resolve ( name )
104105 . replace ( / ^ ( .* ?\/ n o d e _ m o d u l e s \/ ( @ [ ^ / ] + \/ ) ? [ ^ / ] + ) ( \/ .* ) $ / , '$1' )
105106 ) ;
106- info ( position . source ) ;
107107 } else {
108108 position = {
109109 source : stack . getFileName ( ) ,
@@ -114,24 +114,13 @@ async function handlePrerenderError(err, env, stack, entry) {
114114
115115 const sourceLines = getLines ( env , position ) ;
116116
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+ : '' ;
135124
136125 const stderr = process . stderr . write . bind ( process . stderr ) ;
137126
0 commit comments