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

初始化PDF.JS时出现Uncaught ReferenceError: PDFJS未定义问题求助

搞定 "Uncaught ReferenceError: PDFJS is not defined" 问题

嘿,我来帮你拆解下这个问题——这种命名空间找不到的错误在PDF.js部署里挺常见的,咱们按优先级一步步排查:

1. 先查PDF.js的命名空间是不是搞错了

这是最容易踩的坑!新版本的PDF.js已经把全局命名空间从PDFJS改成pdfjsLib了。如果你用的是近年更新的PDF.js版本,却还在写PDFJS.getDocument(...),肯定会报错。

举个例子,旧写法要改成这样:

// 旧写法(过时了)
// PDFJS.getDocument('your-file.pdf').promise.then(...)

// 新写法(适配新版本)
pdfjsLib.getDocument('your-file.pdf').promise.then(function(pdf) {
  // 这里处理PDF内容
});

先确认你用的PDF.js版本对应的命名空间,去你下载的PDF.js包里看说明文档,或者直接看脚本文件里的全局变量名。

2. 确认PDF.js脚本的加载顺序

脚本加载顺序错了也会导致这个错误——你得保证PDF.js的脚本在你调用它的代码之前加载完成。比如页面结构得是这样:

<!-- 先加载PDF.js核心脚本 -->
<script src="/path/to/pdf.js"></script>
<!-- 再写你的自定义调用代码 -->
<script>
  // 这里安全调用pdfjsLib
  pdfjsLib.getDocument('your-file.pdf').promise.then(...);
</script>

如果你是用jQuery的getScript异步加载PDF.js,一定要在回调里再执行调用逻辑,别着急:

$.getScript('/path/to/pdf.js', function() {
  // 等脚本加载完再干活
  pdfjsLib.getDocument('your-file.pdf').promise.then(...);
});

3. jQuery 1.10.2背锅吗?大概率不会

jQuery 1.10.2确实挺老,但PDF.js本身不依赖jQuery,所以两者核心逻辑不会直接冲突。不过要注意两个小细节:

  • 如果你用了jQuery的$(document).ready(),要确保PDF.js已经在ready事件触发前加载完成,或者把加载PDF.js的代码放在ready回调里;
  • 别让jQuery的全局变量和PDF.js的命名空间搞混(不过现在用pdfjsLib基本不会有这个问题)。

4. 检查CMS的脚本加载限制

有些CMS会搞脚本合并、延迟加载这类优化,可能会把PDF.js的脚本给漏加载了,或者打乱了加载顺序。你可以打开浏览器F12的「网络」标签,看看PDF.js的脚本是不是成功加载了(状态码是200),路径有没有写错,或者CMS有没有禁止加载外部脚本的设置。


总结下:先查命名空间和加载顺序,这俩是90%的概率会出问题的地方。jQuery旧版本大概率不是直接原因,但也要注意加载时机的配合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:15:18