import express from "express"; import compression from "compression"; import { renderPage } from "vite-plugin-ssr"; import "../dist/server/importBuild.cjs"; const isProduction = process.env.NODE_ENV === "production"; const root = `${__dirname}/..`; export default async function createServer() { const app = express(); app.use(compression()); if (isProduction) { const sirv = (await import("sirv")).default; app.use(sirv(`${root}/dist/client`)); } else { const vite = await import("vite"); const viteDevMiddleware = ( await vite.createServer({ root, server: { middlewareMode: "ssr" }, }) ).middlewares; app.use(viteDevMiddleware); } app.get("*", async (req, res, next) => { const url = req.originalUrl; const pageContextInit = { url, }; const pageContext = await renderPage(pageContextInit); const { httpResponse } = pageContext; if (!httpResponse) return next(); const { body, statusCode, contentType } = httpResponse; res.status(statusCode).type(contentType).send(body); }); return app; }