11import ReactDOMServer from 'react-dom/server' ;
2- import type { ReactElement , Component } from 'react' ;
2+ import type { ReactElement } from 'react' ;
33
44import ComponentRegistry from './ComponentRegistry' ;
55import createReactOutput from './createReactOutput' ;
66import { isServerRenderHash , isPromise } from
77 './isServerRenderResult' ;
88import buildConsoleReplay from './buildConsoleReplay' ;
99import handleError from './handleError' ;
10- import type { RenderParams , RenderResult } from './types/index' ;
10+ import type { RenderParams , RenderResult , RenderingError } from './types/index' ;
1111
1212export default function serverRenderReactComponent ( options : RenderParams ) : null | string | Promise < RenderResult > {
1313 const { name, domNodeId, trace, props, railsContext, returnPromise, throwJsErrors } = options ;
1414
1515 let renderResult : null | string | Promise < string > = null ;
1616 let hasErrors = false ;
17- let renderingError : any = null ;
17+ let renderingError : null | RenderingError = null ;
1818
1919 try {
2020 const componentObj = ComponentRegistry . get ( name ) ;
@@ -85,12 +85,11 @@ Function Component.`);
8585 }
8686
8787 const consoleReplayScript = buildConsoleReplay ( ) ;
88- const addRenderingErrors = ( resultObject : RenderResult ) => {
89- resultObject . renderingError = {
90- message : renderingError . message ,
91- stack : renderingError . stack ,
88+ const addRenderingErrors = ( resultObject : RenderResult , renderError : RenderingError ) => {
89+ resultObject . renderingError = { // eslint-disable-line no-param-reassign
90+ message : renderError . message ,
91+ stack : renderError . stack ,
9292 } ;
93- return resultObject ;
9493 }
9594
9695 if ( returnPromise ) {
@@ -101,9 +100,9 @@ Function Component.`);
101100 hasErrors,
102101 } ;
103102
104- if ( renderingError ) {
105- addRenderingErrors ( promiseResult ) ;
106- } ;
103+ if ( renderingError !== null ) {
104+ addRenderingErrors ( promiseResult , renderingError ) ;
105+ }
107106
108107 return promiseResult ;
109108 } ;
@@ -118,8 +117,8 @@ Function Component.`);
118117 } as RenderResult ;
119118
120119 if ( renderingError ) {
121- addRenderingErrors ( result ) ;
122- } ;
120+ addRenderingErrors ( result , renderingError ) ;
121+ }
123122
124123 return JSON . stringify ( result ) ;
125124}
0 commit comments