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

使用pdfjs-dist低版本搭配worker-loader时EventBus未定义报错求助

解决pdfjs-dist搭配worker-loader时EventBus未定义的错误

当使用pdfjs-dist ^3.0.279及更低版本,同时搭配worker-loader 3.0.8或2.0.0时,会触发TypeError: Cannot read properties of undefined (reading 'EventBus')错误,原代码写法如下:

import { PDFJS as PDFJSViewer } from 'pdfjs-dist/web/pdf_viewer.js';
// tried * as pdfjs from ... but din't help

let eventBus = new PDFJSViewer.EventBus();

this._pdfViewer = new PDFJSViewer.PDFViewer({
      container: viewerContainer,
      eventBus: this._eventBus,
    });

解决方案:

  • 修正导入逻辑
    在该版本区间的pdfjs-dist中,EventBus和PDFViewer是同级导出的成员,并非挂载在PDFJS对象下。修改导入代码:

    import { PDFViewer, EventBus } from 'pdfjs-dist/web/pdf_viewer.js';
    

    之后直接实例化使用:

    const eventBus = new EventBus();
    this._pdfViewer = new PDFViewer({
      container: viewerContainer,
      eventBus: eventBus,
    });
    
  • 配置worker-loader正确加载PDF Worker
    在webpack配置中添加worker-loader的规则,确保pdf.worker.js被正确处理:

    module.exports = {
      module: {
        rules: [
          {
            test: /pdf\.worker\.js$/,
            use: { loader: 'worker-loader' }
          }
        ]
      }
    };
    

    同时在代码中指定Worker路径:

    import * as pdfjsLib from 'pdfjs-dist';
    import PdfWorker from 'pdfjs-dist/build/pdf.worker.entry';
    
    pdfjsLib.GlobalWorkerOptions.workerPort = new PdfWorker();
    
  • 调整版本兼容性
    如果上述方案无效,可尝试将worker-loader降级到^1.1.1版本,该版本与pdfjs-dist ^3.0.x的适配性更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:55:39