From 45340d8f85c9647254316964525454b83bca53bc Mon Sep 17 00:00:00 2001 From: isnowglobal-admin Date: Sat, 13 Jun 2026 19:30:55 -0400 Subject: [PATCH] Fix: Remove import.meta from static.ts for CJS compatibility - Use process.cwd() first, then __dirname fallback - No more import.meta.url in CJS bundle --- server/static.ts | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/server/static.ts b/server/static.ts index 943aed5..281df75 100644 --- a/server/static.ts +++ b/server/static.ts @@ -2,28 +2,29 @@ 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"); + // In production CJS bundle, we check cwd first (PM2 working directory) 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`, - ); + if (fs.existsSync(cwdDistPath)) { + app.use(express.static(cwdDistPath)); + app.use("/{*path}", (_req, res) => { + res.sendFile(path.resolve(cwdDistPath, "index.html")); + }); + return; } - app.use(express.static(distPath)); + // Fallback: check relative to this file + const bundleDistPath = path.resolve(__dirname, "..", "public"); + if (fs.existsSync(bundleDistPath)) { + app.use(express.static(bundleDistPath)); + app.use("/{*path}", (_req, res) => { + res.sendFile(path.resolve(bundleDistPath, "index.html")); + }); + return; + } - // fall through to index.html if the file doesn't exist - app.use("/{*path}", (_req, res) => { - res.sendFile(path.resolve(distPath, "index.html")); - }); + throw new Error( + `Could not find the build directory. Checked: ${cwdDistPath}, ${bundleDistPath}`, + ); }