@@ -90,12 +90,6 @@ export const createRequestHandler: CreateRequestHandlerFunction = (
9090 return async function requestHandler ( request , initialContext ) {
9191 _build = typeof build === "function" ? await build ( ) : build ;
9292
93- let loadContext = _build . future . unstable_middleware
94- ? new unstable_RouterContextProvider (
95- initialContext as unknown as unstable_InitialContext
96- )
97- : initialContext || { } ;
98-
9993 if ( typeof build === "function" ) {
10094 let derived = derive ( _build , mode ) ;
10195 routes = derived . routes ;
@@ -110,6 +104,44 @@ export const createRequestHandler: CreateRequestHandlerFunction = (
110104 errorHandler = derived . errorHandler ;
111105 }
112106
107+ let params : RouteMatch < ServerRoute > [ "params" ] = { } ;
108+ let loadContext : AppLoadContext | unstable_RouterContextProvider ;
109+
110+ let handleError = ( error : unknown ) => {
111+ if ( mode === ServerMode . Development ) {
112+ getDevServerHooks ( ) ?. processRequestError ?.( error ) ;
113+ }
114+
115+ errorHandler ( error , {
116+ context : loadContext ,
117+ params,
118+ request,
119+ } ) ;
120+ } ;
121+
122+ if ( _build . future . unstable_middleware ) {
123+ if ( initialContext == null ) {
124+ loadContext = new unstable_RouterContextProvider ( ) ;
125+ } else {
126+ try {
127+ loadContext = new unstable_RouterContextProvider (
128+ initialContext as unknown as unstable_InitialContext
129+ ) ;
130+ } catch ( e ) {
131+ let error = new Error (
132+ "Unable to create initial `unstable_RouterContextProvider` instance. " +
133+ "Please confirm you are returning an instance of " +
134+ "`Map<unstable_routerContext, unknown>` from your `getLoadContext` function." +
135+ `\n\nError: ${ e instanceof Error ? e . toString ( ) : e } `
136+ ) ;
137+ handleError ( error ) ;
138+ return returnLastResortErrorResponse ( error , serverMode ) ;
139+ }
140+ }
141+ } else {
142+ loadContext = initialContext || { } ;
143+ }
144+
113145 let url = new URL ( request . url ) ;
114146
115147 let normalizedBasename = _build . basename || "/" ;
@@ -127,19 +159,6 @@ export const createRequestHandler: CreateRequestHandlerFunction = (
127159 normalizedPath = normalizedPath . slice ( 0 , - 1 ) ;
128160 }
129161
130- let params : RouteMatch < ServerRoute > [ "params" ] = { } ;
131- let handleError = ( error : unknown ) => {
132- if ( mode === ServerMode . Development ) {
133- getDevServerHooks ( ) ?. processRequestError ?.( error ) ;
134- }
135-
136- errorHandler ( error , {
137- context : loadContext ,
138- params,
139- request,
140- } ) ;
141- } ;
142-
143162 // When runtime SSR is disabled, make our dev server behave like the deployed
144163 // pre-rendered site would
145164 if ( ! _build . ssr ) {
0 commit comments