You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vercel无服务器函数中pdfjs-dist部署后报错:找不到pdf.worker.js模块

问题描述

在Vercel无服务器函数的Node运行时中使用pdfjs-dist包解析PDF文件,本地运行vercel dev时一切正常,但部署后访问远程端点出现错误:

Error: Setting up fake worker failed: "Cannot find module './pdf.worker.js'"

环境信息:本地Node版本v16.16;Vercel Node版本16.x;pdfjs-dist版本^3.0.279。

差异原因
  • Vercel部署时的打包逻辑与本地vercel dev不同:本地运行时依赖的node_modules完整保留,pdfjs-dist可以直接找到同目录的pdf.worker.js;而Vercel会通过依赖分析工具(如NFT)只打包必要文件,pdf.worker.js可能未被识别为必要依赖,导致部署后缺失。
  • 部署后的Vercel Serverless函数运行在沙箱环境中,文件路径结构被压缩,pdfjs-dist默认的相对路径查找逻辑失效,无法定位到worker文件。
解决方案

方案1:显式指定Worker入口

通过导入worker的entry文件并设置全局Worker路径,避免自动查找失败:

import * as pdfjs from "pdfjs-dist/legacy/build/pdf";
import pdfjsWorker from "pdfjs-dist/legacy/build/pdf.worker.entry";

// 全局指定Worker源
pdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker;

// 正常解析PDF
const document = await pdfjs.getDocument(url).promise;

方案2:使用Node专用入口

如果是纯Node环境(无浏览器需求),直接使用pdfjs-dist的Node专用构建版本,无需处理Worker:

import * as pdfjs from "pdfjs-dist/legacy/build/pdf.node";

const document = await pdfjs.getDocument(url).promise;

内容的提问来源于stack exchange,提问作者mikeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:10:29