升级 Babel 配置过程除了遇到 replaceAll-is-not-a-function
问题,还遇到关于 Babel sourceType 配置的问题。
报错 ES Modules 不能使用 module.exports 或者 exports.*
项目代码
为什么会报错呢
之前设置 useBuiltIns
为 false
,是在项目入口的最前面引入所有的 polyfill
;而使用 usage
,会在对应需要 polyfill 的地方引入 polyfill
,并且 Babel 默认是以 import
引入 polyfill 的。
Webpack 认为有 import
语法的就是 ES Module,ES Module 不能有 exports
,所以报错了。
解决办法,让 Babel 不默认使用 import
,而是根据文件自动推断,配置 Babel sourceType
为 unambiguous
。
配置优化
设置 Babel sourceType
为 unambiguous
会对所有文件都去推断,多出很多额外的工作。可以使用 overrides
覆盖对某个包的配置。
1 | overrides: [ |