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

Vercel部署后报错:Setting up fake worker failed无法找到./pdf.worker.js

问题

开发了一款支持上传PDF并与PDF对话的Web应用,采用pdfjs-dist(版本2.16.105)读取PDF内容。本地运行一切正常,但部署至Vercel后,上传PDF点击「处理文件」按钮时触发以下错误:

Setting up fake worker failed: "Cannot find module './pdf.worker.js'
Require stack:
/var/task/node_modules/pdfjs-dist/legacy/build/pdf.js
/var/task/.next/server/pages/api/process.js
/var/task/node_modules/next/dist/server/next-server.js
/var/task/___next_launcher.cjs".

原因分析

Vercel部署环境中,Next.js的API路由对pdfjs-dist默认的worker文件路径解析出现异常,worker文件未被正确识别或打包到部署产物中。

解决方案

1. 显式指定Worker CDN路径(最便捷)

在处理PDF的API代码(pages/api/process.js)中,手动设置Worker的CDN地址,绕开本地路径解析问题:

import * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf';

// 替换为对应你使用的pdfjs-dist版本的公开CDN Worker文件地址
pdfjsLib.GlobalWorkerOptions.workerSrc = '对应版本的pdf.worker.min.js的CDN地址';

2. 配置本地Worker文件路径

如果不想依赖CDN,可将pdfjs-dist的worker文件复制到Next.js的public目录,然后指定本地路径:

  1. 从node_modules/pdfjs-dist/legacy/build/pdf.worker.js复制文件到项目根目录的public文件夹
  2. 在API代码中设置路径:
pdfjsLib.GlobalWorkerOptions.workerSrc = '/pdf.worker.js';

3. 修改Webpack配置适配路径解析

在next.config.js中添加Webpack配置,修正worker文件的别名解析:

module.exports = {
  webpack: (config) => {
    config.resolve.alias['./pdf.worker.js'] = 'pdfjs-dist/legacy/build/pdf.worker.js';
    return config;
  },
};

4. 升级pdfjs-dist版本(长期方案)

考虑升级到pdfjs-dist 3.x及以上版本,新版本对Node.js和Next.js的打包兼容性更优,升级后调整导入和Worker设置:

import * as pdfjsLib from 'pdfjs-dist';

pdfjsLib.GlobalWorkerOptions.workerSrc = new URL('pdfjs-dist/build/pdf.worker.min.js', import.meta.url).href;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:27:32