jsPDF报错Uncaught ReferenceError: jsPDF is not defined问题求助
解决方案
报错核心原因
你使用的1.2.61版本jsPDF库,全局暴露的构造函数名为大写开头的JsPDF,你代码里写的全小写jsPDF和实际暴露的变量名不匹配,所以触发未定义报错。
调整步骤
- 把JavaScript代码中
new jsPDF()修改为new JsPDF(),和库暴露的全局变量名匹配 - 确保jQuery、jsPDF库的引入顺序在你自己编写的业务脚本之前,避免库未加载完成就调用相关方法
- 如果在在线编辑器中运行,需要将自定义脚本的加载模式设置为不封装到闭包中,保证
createPdf函数可以被全局访问到
调整后完整可运行代码
HTML代码
<!-- 先引入依赖库,顺序不要颠倒 --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.debug.js"></script> <div id="content"> <h3>Hello, this is a H3 tag</h3> <p>A paragraph</p> </div> <div id="editor"></div> <button onclick="javascript:createPdf()" id="cmd">generate PDF</button>
JavaScript代码
function createPdf() { // 构造函数名改为大写开头的JsPDF,匹配1.2.61版本的暴露规则 var doc = new JsPDF(); const source = $('#content')[0]; const specialElementHandlers = { '#editor': function(element, renderer) { return true } }; doc.fromHTML( source, 15, 15, { 'width': 170, 'elementHandlers': specialElementHandlers } ); doc.save('sample-file.pdf') }
补充说明
如果你后续升级到2.x及以上版本的jsPDF,全局暴露的构造函数名会改为全小写的jsPDF,到时候再调整回你原来的写法即可。
内容的提问来源于stack exchange,提问作者user3731176
相关产品推荐
相关产品推荐

