@@ -45,6 +45,7 @@ import {
45
45
getEntrySource ,
46
46
hashString ,
47
47
normalizeRelativePath ,
48
+ getFetchHandlerExport ,
48
49
sortObject ,
49
50
withRollupError ,
50
51
} from './plugins/utils'
@@ -514,13 +515,14 @@ export default function vitePluginRsc(
514
515
`[vite-rsc] failed to resolve server handler '${ source } '` ,
515
516
)
516
517
const mod = await environment . runner . import ( resolved . id )
518
+ const fetchHandler = getFetchHandlerExport ( mod )
517
519
// expose original request url to server handler.
518
520
// for example, this restores `base` which is automatically stripped by Vite.
519
521
// https://github.com/vitejs/vite/blob/84079a84ad94de4c1ef4f1bdb2ab448ff2c01196/packages/vite/src/node/server/middlewares/base.ts#L18-L20
520
522
req . url = req . originalUrl ?? req . url
521
523
// ensure catching rejected promise
522
524
// https://github.com/mjackson/remix-the-web/blob/b5aa2ae24558f5d926af576482caf6e9b35461dc/packages/node-fetch-server/src/lib/request-listener.ts#L87
523
- await createRequestListener ( mod . default ) ( req , res )
525
+ await createRequestListener ( fetchHandler ) ( req , res )
524
526
} catch ( e ) {
525
527
next ( e )
526
528
}
@@ -541,7 +543,8 @@ export default function vitePluginRsc(
541
543
)
542
544
const entry = pathToFileURL ( entryFile ) . href
543
545
const mod = await import ( /* @vite -ignore */ entry )
544
- const handler = createRequestListener ( mod . default )
546
+ const fetchHandler = getFetchHandlerExport ( mod )
547
+ const handler = createRequestListener ( fetchHandler )
545
548
546
549
// disable compressions since it breaks html streaming
547
550
// https://github.com/vitejs/vite/blob/9f5c59f07aefb1756a37bcb1c0aff24d54288950/packages/vite/src/node/preview.ts#L178
0 commit comments