首先,安裝 react 和 react-dom:
sh
# 可以使用任何包管理器
bun add react react-dom要在服務器端將 React 組件渲染為 HTML 流 (SSR):
tsx
import { renderToReadableStream } from "react-dom/server";
function Component(props: { message: string }) {
return (
<body>
<h1>{props.message}</h1>
</body>
);
}
const stream = await renderToReadableStream(<Component message="Hello from server!" />);將其與 Bun.serve() 結合,我們得到一個簡單的 SSR HTTP 服務器:
tsx
Bun.serve({
async fetch() {
const stream = await renderToReadableStream(<Component message="Hello from server!" />);
return new Response(stream, {
headers: { "Content-Type": "text/html" },
});
},
});React 19 及更高版本包含一個 SSR 優化,它利用了 Bun 的"直接"ReadableStream 實現。如果你遇到類似 export named 'renderToReadableStream' not found 的錯誤,請確保安裝版本 19 的 react 和 react-dom,或者從 react-dom/server.browser 導入而不是 react-dom/server。有關更多信息,請參閱 facebook/react#28941。