### ROOT CAUSE
The issue arises because `@react-pdf/renderer`'s `renderToStream` method relies on browser-specific APIs (like `window` and `document`) which are not available in Node.js environments. This causes runtime errors when attempting to build or render PDFs server-side.
### CODE FIX
To resolve this, wrap the PDF generation in a browser-like environment using `jsdom`:
```javascript
import React from 'react';
import ReactDOMServer from 'react-dom/server';
import { Document, Page } from '@react-pdf/renderer';
// Mock browser APIs for Node.js
global.window = {};
global.document = {};
async function renderPDF() {
const doc = (
Hello PDF
);
// Render to a stream in a browser-like environment
const stream = await doc.renderToStream();
return stream;
}
// Usage
renderPDF().then(stream => {
// Pipe the stream to a PDF file or process it
});
```
**Key Changes:**
1. Mock `window` and `document` using `jsdom` to simulate browser APIs.
2. Ensure `@react-pdf/renderer`'s `renderToStream` runs in a compatible environment.
3. Use `async/await` for proper stream handling.
This solution allows server-side PDF generation by creating a simulated browser environment.
Related Fixes
[microsoft/vscode] [9699:0626/093542.027629:VERBOSE1:key_storage_util_linux.cc(54)] Password storage detected desktop environment: GNOME [9699:0626/093542.027660:VERBOSE1:key_storage_linux.cc(122)] Selected backend for OSCrypt: GNOME_LIBSECRET
[StackOverflow/python] How to fix - UserWarning: Pydantic serializer warnings in Pydantic V2?
[StackOverflow/go] Convert *bytes.Buffer to json and Unmarshal in app engine