@@ -83,6 +83,10 @@ exports = module.exports = function errorHandler(options) {
8383 log = logerror
8484 }
8585
86+ // load html and style
87+ var html = fs . readFileSync ( TEMPLATE_PATH , 'utf8' )
88+ var style = fs . readFileSync ( STYLESHEET_PATH , 'utf8' )
89+
8690 return function errorHandler ( err , req , res , next ) {
8791 // respect err.statusCode
8892 if ( err . statusCode ) {
@@ -119,30 +123,24 @@ exports = module.exports = function errorHandler(options) {
119123
120124 // html
121125 if ( type === 'html' ) {
122- fs . readFile ( STYLESHEET_PATH , 'utf8' , function ( e , style ) {
123- if ( e ) return next ( e ) ;
124- fs . readFile ( TEMPLATE_PATH , 'utf8' , function ( e , html ) {
125- if ( e ) return next ( e ) ;
126- var isInspect = ! err . stack && String ( err ) === toString . call ( err )
127- var errorHtml = ! isInspect
128- ? escapeHtmlBlock ( str . split ( '\n' , 1 ) [ 0 ] || 'Error' )
129- : 'Error'
130- var stack = ! isInspect
131- ? String ( str ) . split ( '\n' ) . slice ( 1 )
132- : [ str ]
133- var stackHtml = stack
134- . map ( function ( v ) { return '<li>' + escapeHtmlBlock ( v ) + '</li>' } )
135- . join ( '' )
136- var body = html
137- . replace ( '{style}' , style )
138- . replace ( '{stack}' , stackHtml )
139- . replace ( '{title}' , escapeHtml ( exports . title ) )
140- . replace ( '{statusCode}' , res . statusCode )
141- . replace ( / \{ e r r o r \} / g, errorHtml )
142- res . setHeader ( 'Content-Type' , 'text/html; charset=utf-8' )
143- res . end ( body )
144- } ) ;
145- } ) ;
126+ var isInspect = ! err . stack && String ( err ) === toString . call ( err )
127+ var errorHtml = ! isInspect
128+ ? escapeHtmlBlock ( str . split ( '\n' , 1 ) [ 0 ] || 'Error' )
129+ : 'Error'
130+ var stack = ! isInspect
131+ ? String ( str ) . split ( '\n' ) . slice ( 1 )
132+ : [ str ]
133+ var stackHtml = stack
134+ . map ( function ( v ) { return '<li>' + escapeHtmlBlock ( v ) + '</li>' } )
135+ . join ( '' )
136+ var body = html
137+ . replace ( '{style}' , style )
138+ . replace ( '{stack}' , stackHtml )
139+ . replace ( '{title}' , escapeHtml ( exports . title ) )
140+ . replace ( '{statusCode}' , res . statusCode )
141+ . replace ( / \{ e r r o r \} / g, errorHtml )
142+ res . setHeader ( 'Content-Type' , 'text/html; charset=utf-8' )
143+ res . end ( body )
146144 // json
147145 } else if ( type === 'json' ) {
148146 var error = { message : err . message , stack : err . stack } ;
0 commit comments