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

在Angular 6中使用ngx-extended-pdf-viewer展示PDF遇报错求助

解决Angular 6中ngx-extended-pdf-viewer的TypeError: Cannot set property 'setHash' of null错误

我之前在Angular 6项目里用ngx-extended-pdf-viewer的时候也踩过这个坑,这个错误本质上是PDF.js的初始化实例未正确创建导致的,给你几个亲测有效的解决方向:

1. 确保组件版本与Angular 6完全兼容

Angular 6属于比较早期的版本,新版本的ngx-extended-pdf-viewer已经不再适配它了。你需要卸载当前安装的版本,重新安装明确支持Angular 6的版本:

npm uninstall ngx-extended-pdf-viewer
npm install ngx-extended-pdf-viewer@2.0.0 --save

这个版本是经过验证可以稳定运行在Angular 6环境下的。

2. 优化组件初始化时机(比delayFirstView更可靠)

虽然你已经加了delayFirstView="1000",但Angular 6的变更检测机制可能还是会让组件在DOM未完全就绪时就开始初始化。可以用*ngIf配合组件生命周期钩子来控制渲染时机:

  • 在组件的.ts文件中添加一个状态变量:
isViewerReady = false;

ngAfterViewInit(): void {
  // 确保DOM完全渲染后再加载PDF组件
  setTimeout(() => {
    this.isViewerReady = true;
  }, 1500);
}
  • 修改你的HTML代码:
<ngx-extended-pdf-viewer 
  *ngIf="isViewerReady"
  src="assets/dataset/doc_2.pdf" 
  id="idocument" 
  type="application/pdf" 
  width="100%"
  delayFirstView="2000"
></ngx-extended-pdf-viewer>

3. 检查PDF文件的加载路径与配置

确认你的PDF文件路径assets/dataset/doc_2.pdf是正确的:

  • 检查该文件是否确实存在于项目的src/assets/dataset目录下
  • 打开angular.json,确认assets配置里包含了src/assets(默认是有的,但如果有自定义配置可能会遗漏),确保打包时该文件能被正确输出

4. 排查是否存在PDF.js版本冲突

ngx-extended-pdf-viewer自带了PDF.js的依赖,如果你的项目中还手动引入了其他版本的PDF.js脚本,就会导致全局对象冲突,进而引发setHash为null的错误。检查项目的index.html或其他脚本引入处,移除多余的PDF.js相关引用。

如果以上方法都无效,可以尝试清理项目依赖缓存:

npm cache clean --force
rm -rf node_modules package-lock.json
npm install

有时候缓存导致的依赖损坏也会引发这类奇怪的初始化错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:05:08