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

Next.js+TypeScript中使用pdfjs-dist报错:找不到pdf.worker.js模块

解决pdfjs-dist在Next.js服务端路由中找不到pdf.worker.js的问题

错误原因

这个错误是因为pdfjs-dist依赖独立的Worker脚本处理PDF文件,但在Next.js服务端环境中,它无法自动定位到Worker文件的正确路径,导致加载失败。

解决方案

不需要额外添加文件,只需调整代码配置Worker的正确路径即可。以下是两种可行的修复方式:

方式一:使用官方提供的Worker入口模块

直接导入pdfjs-dist包内的Worker入口文件,并配置给GlobalWorkerOptions:

import { NextResponse } from "next/server";
import * as PDFJS from 'pdfjs-dist';
import { TextItem } from 'pdfjs-dist/types/src/display/api';
import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry.js';

// 配置Worker源
PDFJS.GlobalWorkerOptions.workerSrc = pdfjsWorker;

export async function POST() {
    let myFiledata = await fetch("url to my S3 bucket")
    if (myFiledata.ok) {
        const arrayBuffer = await myFiledata.arrayBuffer();
        let pdfDoc = await PDFJS.getDocument({ data: arrayBuffer }).promise;
        const numPages = pdfDoc.numPages;
        let fullText = '';
        
        for (let i = 0; i < numPages; i++) {
            let page = await pdfDoc.getPage(i + 1);
            let textContent = await page.getTextContent();
            const pageText = textContent.items.map((item) => (item as TextItem).str).join(' ');
            fullText += pageText + '\n';
            console.log(`Page ${i+1} text:`, pageText);
        }
        return new NextResponse("Success", { status: 200 });
    } else {
        return new NextResponse("Internal Error", { status: 500 });
    }
}

方式二:使用require.resolve定位Worker文件路径

如果上述方式不生效,可以通过Node.js的require.resolve获取Worker文件的绝对路径:

import { NextResponse } from "next/server";
import * as PDFJS from 'pdfjs-dist';
import { TextItem } from 'pdfjs-dist/types/src/display/api';
import { createRequire } from 'module';

const require = createRequire(import.meta.url);
// 通过require.resolve获取Worker文件的绝对路径
PDFJS.GlobalWorkerOptions.workerSrc = require.resolve('pdfjs-dist/build/pdf.worker.js');

export async function POST() {
    // 剩余代码与方式一一致
}

备选方案:使用兼容服务器环境的Legacy构建

如果遇到现代构建版本的兼容性问题,可以切换到pdfjs-dist的Legacy版本:

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

PDFJS.GlobalWorkerOptions.workerSrc = pdfjsWorker;

故障排查

  • 确保已正确安装依赖:执行npm install pdfjs-dist或yarn add pdfjs-dist
  • 清理缓存并重新安装依赖:rm -rf node_modules package-lock.json && npm install
  • 检查node_modules/pdfjs-dist/build目录下是否存在pdf.worker.js文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:06:11