mrmelon54.com/server.ts

37 lines
996 B
TypeScript

const express = require("express");
const {renderPage} = require("vite-plugin-ssr");
const isProduction = process.env.NODE_ENV === "production";
const root = `${__dirname}/..`;
startServer();
async function startServer() {
const app = express();
if (isProduction) {
app.use(express.static(`${root}/client`));
} else {
const vite = require("vite");
const viteDevServer = await vite.createServer({
root,
server: {
middlewareMode: true,
},
});
app.use(viteDevServer.middlewares);
}
app.get("*", async (req, res, next) => {
const pageContextInit = {urlOriginal: req.originalUrl};
const pageContext = await renderPage(pageContextInit);
if (pageContext.httpResponse === null) return next();
const {body, statusCode, contentType} = pageContext.httpResponse;
res.status(statusCode).type(contentType).send(body);
});
const port = 5173;
app.listen(port);
console.log(`Server running at http://localhost:${port}`);
}