Angular 18升级pdfjs-dist至4.6.82时遇模块及导出成员错误
Angular 18升级pdfjs-dist至4.6.82的两类错误解决方法
错误1:无法解析模块路径'pdfjs-dist/build/pdf.worker.entry'
pdfjs-dist从3.x版本开始就废弃了pdf.worker.entry这个路径,改用ES模块格式的pdf.worker.mjs。解决步骤:
- 替换代码中的导入语句:把
import 'pdfjs-dist/build/pdf.worker.entry'改成import 'pdfjs-dist/build/pdf.worker.mjs' - 或者在初始化PDF库时手动指定worker来源(更适配Angular 18的ES模块环境):
import * as pdfjsLib from 'pdfjs-dist'; pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdfjs-dist/build/pdf.worker.mjs';
- 检查
angular.json的build.options.scripts配置,如果之前加过旧的worker路径,删除后改用代码导入方式。
错误2:模块"pdfjs-dist"不存在导出成员'PDFViewerParams'
PDFViewerParams在pdfjs-dist 3.x版本被标记为废弃,4.x版本彻底移除,取而代之的是ViewerOptions类型,且需要从pdfjs-dist/web/pdf_viewer导入。解决步骤:
- 替换导入语句:
// 旧代码 import { PDFViewerParams } from 'pdfjs-dist'; // 新代码 import { ViewerOptions } from 'pdfjs-dist/web/pdf_viewer';
- 调整参数结构(原
PDFViewerParams的属性基本都兼容ViewerOptions,个别属性名略有微调,比如sidebarViewOnLoad改为initialSidebarView):
// 旧代码 const viewerParams: PDFViewerParams = { container: document.getElementById('pdf-container'), sidebarViewOnLoad: 0, // 其他参数 }; // 新代码 const viewerOptions: ViewerOptions = { container: document.getElementById('pdf-container'), initialSidebarView: 0, // 其他参数保持不变 };
内容的提问来源于stack exchange,提问作者Chandan Singh
相关产品推荐
相关产品推荐

