AeThex-OS/server/static.ts

34 lines
1.1 KiB
TypeScript

import express, { type Express } from "express";
import fs from "fs";
import path from "path";
export function serveStatic(app: Express) {
// Robust path resolution for Unikernel environment
const cwd = process.cwd();
let distPath = path.resolve(__dirname, "public");
// Fallback: If __dirname based path fails, try relative to CWD
if (!fs.existsSync(distPath)) {
// Assuming structure is /dist/public or just /public depending on how CWD is set
const altPath = path.join(cwd, "dist", "public");
if (fs.existsSync(altPath)) {
distPath = altPath;
} else {
// Try just "public" if CWD is already inside dist (unlikely but possible)
const rootPublic = path.join(cwd, "public");
if (fs.existsSync(rootPublic)) distPath = rootPublic;
}
}
if (!fs.existsSync(distPath)) {
throw new Error(`Could not find the build directory: ${distPath}`);
}
app.use(express.static(distPath));
// fall through to index.html if the file doesn't exist
app.use("*", (req, res) => {
res.sendFile(path.resolve(distPath, "index.html"));
});
}