这两天碰到一个问题,是在一个taro的项目中,有人使用了module.exports后我本地项目打包之后在开发者工具一直报错(TypeError:Cannot assign to read only property 'exports' of object '#<object>'),但是在同事那里本地项目是可以跑起来的,对比了一项我们两个打包有的代码,发现打包后的common.js存在差异

上边的是我打包的,下边是同事的打包目录中common.js,发现我自己打包的文件没有“_interopRequireDefault”这样的代码,自己查了半天,最后还是同事大佬帮助下得以解决了。原因是配置文件config目录下的index.js中的关于babel-preset-env的配置中,modules被配置为false导致的。(modules的配置项可配置为"amd" | "umd" | "systemjs" | "commonjs" | false,默认为 "commonjs"。 功能是启动es6模块语法转换为到另一个模块类型,但是如果配置为false则不会转换模块了),因此产生了上边的报错。

针对此次的问题,我反思了一下原因,是我对于babel的各个插件的作用不了解,导致我查问题的时候方向总是不对,因此我先学习了一下babel-preset-env到底是干什么的,配置项都有什么。接下来我要把babel相关的总结一遍,保证类似的问题只需要求助一次在这里非常感谢热心的同时。
参考
网友评论