解决在标准JS文件中使用npm安装的zebra-browser-print-wrapper包的报错问题
解决
exports is not defined报错的方法 你遇到的问题根源是:你引入的CDN版本是CommonJS模块格式——这是给Node.js用的模块规范,浏览器原生不认识exports这种Node.js专属的语法,所以加载就报错了。
下面给你两种简单的解决办法:
方法1:用你已经npm安装好的本地文件(推荐,适合新手)
既然已经执行npm i zebra-browser-print-wrapper装了包,就别用CDN了,直接用包里兼容浏览器的版本:
- 打开项目里的
node_modules/zebra-browser-print-wrapper/lib文件夹,找带umd字样的文件(比如index.umd.js或者index.umd.min.js),UMD格式是同时兼容浏览器和Node.js的 - 把这个文件复制到你项目的静态资源目录(比如自己建的
js/libs文件夹) - 在HTML里引入这个本地文件:
<script src="./js/libs/index.umd.min.js"></script> - 之后就能在你的JS代码里用全局变量调用这个包的API了(具体变量名看包的文档,一般是
ZebraBrowserPrintWrapper这类)
方法2:换CDN的UMD版本
如果不想复制文件,去CDN上找该包的UMD格式版本:
- 检查CDN的文件目录,比如查看
https://cdn.jsdelivr.net/npm/zebra-browser-print-wrapper@0.1.4/lib/下的文件,看看有没有umd子目录或者带umd后缀的压缩文件 - 把原来的CDN链接换成这个UMD版本的地址,浏览器就能正常解析了
新手小提示
搞不清模块格式的话,记住这两点:
- 带
exports/require的是CommonJS,只能在Node.js里用 - 带
umd/iife的是浏览器友好格式,直接在HTML里引就行 - 现代浏览器也支持ES模块(
import/export),但需要给script标签加type="module"
内容的提问来源于stack exchange,提问作者Source Matters
相关产品推荐
相关产品推荐

