mirror of
https://github.com/1f349/svelte-ssr-template.git
synced 2024-10-18 08:41:49 +01:00
37 lines
996 B
TypeScript
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}`);
|
||
|
}
|