No description
Every PDF import failed in production with "Setting up fake worker failed: Cannot find module '/app/node_modules/pdfjs-dist/legacy/build/pdf.worker.mjs'". output: "standalone" ships only the files Next's output tracer can see. It traced pdf.mjs, because lib/invoice-parser.ts imports it by literal path, but the worker's sole reference is a createRequire(...).resolve() call, which the tracer does not follow. So the image contained pdf.mjs alone, pdfjs fell back to its default "./pdf.worker.mjs" relative to pdf.mjs, and the import hit a file that was never copied. Copy the whole package in the runner stage: the worker has to sit next to pdf.mjs, and so do the standard fonts, which the parser needs because it passes useSystemFonts. Verified against the reconstructed runner layout — the old layout reproduces the error verbatim, the new one parses and extracts text. Also in lib/invoice-parser.ts: workerPinned was set before the resolve, so a failed resolve was never retried; and the empty catch swallowed the MODULE_NOT_FOUND that named the real cause. Both fixed. |
||
|---|---|---|
| .mavis/canvas-assets | ||
| app | ||
| components | ||
| data/source | ||
| docs | ||
| lib | ||
| public | ||
| scripts | ||
| worker | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| COOLIFY.md | ||
| Dockerfile | ||
| HANDOFF-PROMPT-2.md | ||
| HANDOFF-PROMPT-3.md | ||
| HANDOFF-PROMPT-4.md | ||
| HANDOFF-PROMPT.md | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| proxy.ts | ||
| tsconfig.json | ||