报错信息如下
Uncaught ReferenceError: exports is not defined
解决方案
网上查了一下,线索在导入的包使用了 CommonJS 规范,而 Vue Cli 打包使用的是 ESM 规范,所以会报错。
- https://github.com/xiaoxiaojx/blog/issues/27
- https://segmentfault.com/q/1010000014994667
- https://www.cnblogs.com/benbentu/p/10274188.html
- https://cnodejs.org/topic/58b39dcfe418a986315f3953
然后 Vue 官方文档简单提及了一下,不过我没找到办法让 Vue Cli 打包支持 CommonJS 规范。
- https://cli.vuejs.org/zh/guide/build-targets.html#%E5%BA%93
- https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/babel-preset-app#babelpreset-env
这就奇怪的很,开发模式没事,打包就会出现错误。
exports.test = test;
module.exports = { test };
export function test() {}
看一下上面这三个的导出方式,我用 rollup
打包的时候,加了 format: 'cjs'
,就会报错,后来我去掉了就解决了这个问题