使用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
相关产品推荐
相关产品推荐

