Suport render pdf for nest js
Hi all.
Now I am using react-pdf/renderer for nest js But i have problem when run time error Error [ERR_REQUIRE_ESM]: require() of ES Module .../node_modules/.pnpm/@[email protected][email protected]/node_modules/@react-pdf/renderer/lib/react-pdf.js from /.../services/a.js not supported. Instead change the require of react-pdf.js in.../services/a.js to a dynamic import() which is available in all CommonJS modules. at Hook.Module.require (.../node_modules/.pnpm/[email protected]/node_modules/dd-trace/packages/dd-trace/src/ritm.js:97:33) at.../services/a.js:59:95 at async generatePdf (.../services/a.js:59:22) { code: 'ERR_REQUIRE_ESM' } I don't know this package can support smoothly for nest js
Thanks
I have the same issue
If anyone's interested, I was able to get the latest major revision of the lib (4.3.0 ) to work in Nest 11 (node 20.10) with the following "hack"
import { awaitSync } from '@kaciras/deasync';
import { loadEsm } from 'load-esm'; // Note: `load-esm` is also used internally by Nest's `FileTypeValidator`, which faces a similar challenge due to the import of ESM-only `file-type`
export function importReactPdfRendererSync(): typeof import('@react-pdf/renderer') {
return awaitSync(loadEsm<typeof import('@react-pdf/renderer')>('@react-pdf/renderer'));
}
Example usage:
// SomePdfTemplate.tsx
import type { DocumentProps } from '@react-pdf/renderer';
const { Page, Text, View, Document, StyleSheet, Image, Link } = importReactPdfRendererSync();
export const SomePdfTemplate = (): React.ReactElement<DocumentProps> => {
return (
<Document>
...
I would not advise this in production code though (specifically for the usage of deasync, which as per documentation can introduce performance degradation and can even deadlock the event loop).