浏览器中使用Docxtemplater时出现'Docxtemplater is not defined'错误的求助
浏览器中使用Docxtemplater时出现'Docxtemplater is not defined'错误的求助
嗨,我来帮你排查这个问题~
你遇到的Uncaught ReferenceError: Docxtemplater is not defined错误,核心原因是当前引入的Docxtemplater CDN脚本没有把Docxtemplater对象暴露到浏览器的全局作用域里,导致你的JS代码找不到这个构造函数。
最快的解决办法:改用UMD格式的CDN脚本
大部分现代JS库都会提供UMD(Universal Module Definition)格式的版本,这种格式会自动适配全局环境,把库的核心对象挂载到window上。你只需要把原来的Docxtemplater脚本链接换成带umd标识的版本即可:
替换前的代码:
<script src="https://cdnjs.cloudflare.com/ajax/libs/docxtemplater/3.37.2/docxtemplater.js"></script>
替换后的代码:
<script src="https://cdnjs.cloudflare.com/ajax/libs/docxtemplater/3.37.2/docxtemplater.umd.js"></script>
替换完成后重新测试,应该就能正常识别Docxtemplater构造函数了。
额外的小提醒
我注意到你提到模板里的标签有{number}、{second_name}和number(最后一个没有大括号),要确保模板里的变量格式统一为{变量名}的形式,不然Docxtemplater无法识别并替换内容哦~比如把模板里的number改成{number},这样才能和你代码中setData里的number: numberValue对应上。
其他排查方向
- 确认JSZip脚本在Docxtemplater之前加载(你当前的加载顺序是正确的,JSZip先加载,这点没问题)
- 打开浏览器控制台的「网络」标签,检查Docxtemplater的脚本是否成功加载(有没有出现404等加载错误)
备注:内容来源于stack exchange,提问作者Ruslan Li
相关产品推荐
相关产品推荐

