import express from 'express'; import type { Express } from 'express'; import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); export function serveStatic(app: Express) { // In production CJS bundle, __dirname points to the compiled file // so we check both the bundle-relative path and cwd const bundleDistPath = path.resolve(__dirname, "..", "public"); const cwdDistPath = path.resolve(process.cwd(), "dist", "public"); const distPath = fs.existsSync(cwdDistPath) ? cwdDistPath : bundleDistPath; if (!fs.existsSync(distPath)) { throw new Error( `Could not find the build directory: ${distPath}, make sure to build the client first`, ); } app.use(express.static(distPath)); // fall through to index.html if the file doesn't exist app.use("/{*path}", (_req, res) => { res.sendFile(path.resolve(distPath, "index.html")); }); }