切换到使用renderToReadableStream渲染根组件。

This commit is contained in:
徐涛 2024-12-16 15:18:42 +08:00
parent dbaee0c81a
commit a0dbe4f7fc

View File

@ -1,7 +1,7 @@
import Elysia from 'elysia'; import Elysia from 'elysia';
import { connect } from 'elysia-connect-middleware'; import { connect } from 'elysia-connect-middleware';
import { createElement } from 'react'; import { createElement } from 'react';
import { renderToString } from 'react-dom/server'; import { renderToReadableStream } from 'react-dom/server';
import { createServer } from 'vite'; import { createServer } from 'vite';
import { App } from './src/App'; import { App } from './src/App';
@ -23,13 +23,14 @@ app.use(connect(vite.middlewares));
app.get('/', async ({ request }) => { app.get('/', async ({ request }) => {
const url = request.url.replace(base, ''); const url = request.url.replace(base, '');
const app = createElement(App); const app = createElement(App);
const rootComponent = await renderToString(app); const rootComponent = await renderToReadableStream(app);
const rootComponentString = await Bun.readableStreamToText(rootComponent);
if (!isProduction) { if (!isProduction) {
template = await vite.transformIndexHtml(url, template); template = await vite.transformIndexHtml(url, template);
} }
const html = template.replace(`<!--ssr-outlet-->`, () => rootComponent); const html = template.replace(`<!--ssr-outlet-->`, () => rootComponentString);
return new Response(html, { return new Response(html, {
headers: { headers: {