11import type { Request , Response } from "express" ;
2- import { type Connect , defineConfig } from "vite" ;
2+ import { defineConfig } from "vite" ;
33import marko from "@marko/vite" ;
44
5- type App = Promise < typeof import ( "./src/index.ts" ) > ;
6-
7- const DEV_ENTRY = "./src/index.ts" ;
8- const PROD_ENTRY = import . meta. resolve ( "./dist/index.js" ) ;
9-
105export default defineConfig ( {
116 build : {
12- ssr : DEV_ENTRY ,
7+ ssr : "./src/index.ts" ,
138 sourcemap : true , // Generate sourcemaps for all builds.
149 emptyOutDir : false , // Avoid server & client deleting files from each other.
1510 } ,
@@ -18,20 +13,17 @@ export default defineConfig({
1813 {
1914 name : "preview" ,
2015 configureServer ( server ) {
21- server . middlewares . use (
22- render ( ( ) => server . ssrLoadModule ( DEV_ENTRY ) as App ) ,
23- ) ;
24- } ,
25- configurePreviewServer ( server ) {
26- server . middlewares . use ( render ( ( ) => import ( PROD_ENTRY ) as App ) ) ;
16+ server . middlewares . use ( async ( req , res , next ) => {
17+ try {
18+ const { router } = ( await server . ssrLoadModule (
19+ "./src/index.ts" ,
20+ ) ) as typeof import ( "./src/index.ts" ) ;
21+ router ( req as Request , res as Response , next ) ;
22+ } catch ( err ) {
23+ next ( err ) ;
24+ }
25+ } ) ;
2726 } ,
2827 } ,
2928 ] ,
3029} ) ;
31-
32- function render ( app : ( ) => App ) : Connect . NextHandleFunction {
33- return ( req , res , next ) =>
34- app ( )
35- . then ( ( { router } ) => router ( req as Request , res as Response , next ) )
36- . catch ( next ) ;
37- }
0 commit comments