react-ssr-experiment/server.ts
2024-12-16 16:16:29 +08:00

27 lines
766 B
TypeScript

import Elysia from 'elysia';
import { connect } from 'elysia-connect-middleware';
import { createElement } from 'react';
import { renderToReadableStream } from 'react-dom/server';
import { createServer } from 'vite';
import { App } from './src/App';
const app = new Elysia();
const vite = await createServer({
server: { middlewareMode: true },
appType: 'custom',
});
app.use(connect(vite.middlewares));
app.get('/', async () => {
const app = createElement(App);
const stream = await renderToReadableStream(app, { bootstrapScripts: ['/src/main.tsx'] });
return new Response(stream, {
headers: {
'Content-Type': 'text/html',
},
});
});
app.listen(8000);
console.log(`Server running at http://${app.server?.hostname}:${app.server?.port}`);