From 48e7799634b50c55a80bd653f8465da9df87ed5d Mon Sep 17 00:00:00 2001 From: vgcman16 <155417613+vgcman16@users.noreply.github.com> Date: Thu, 5 Jun 2025 19:21:08 -0500 Subject: [PATCH] chore: lazy load pdfjs --- app/utils/fileExtract.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/utils/fileExtract.ts b/app/utils/fileExtract.ts index 0c8fd736..7e168ae5 100644 --- a/app/utils/fileExtract.ts +++ b/app/utils/fileExtract.ts @@ -1,11 +1,22 @@ -import * as pdfjsLib from 'pdfjs-dist/build/pdf.mjs'; -import pdfWorker from 'pdfjs-dist/build/pdf.worker.mjs'; import mammoth from 'mammoth/mammoth.browser'; -pdfjsLib.GlobalWorkerOptions.workerSrc = pdfWorker; +/* + * Lazily load pdf.js modules so that server environments don't attempt to + * resolve them during the initial import of this file. This avoids errors when + * running in Node.js where the browser-specific build of pdf.js isn't + * available. + */ +async function loadPdfJs() { + const pdfjsLib = await import('pdfjs-dist/build/pdf.mjs'); + const pdfWorker = await import('pdfjs-dist/build/pdf.worker.mjs'); + pdfjsLib.GlobalWorkerOptions.workerSrc = pdfWorker.default ?? pdfWorker; + + return pdfjsLib; +} export async function extractTextFromFile(file: File): Promise { if (file.type === 'application/pdf' || file.name.toLowerCase().endsWith('.pdf')) { + const pdfjsLib = await loadPdfJs(); const arrayBuffer = await file.arrayBuffer(); const pdf = await pdfjsLib.getDocument({ data: arrayBuffer }).promise; const texts: string[] = [];