最近遇到一个问题,发现d3在ie下会报语法错误,后来查了下,发现是因为d3的打包之后的文件里边含有箭头函数,而ie11是不支持箭头函数的,所以很容易想到通过babel去重新编译d3
-
首先想到通过babel去直接编译下d3/dist/d3.min.js,但是这样比较麻烦,需要在什么时候进行编译,不是很好把握。
-
然后想到直接通过webpack配置的babel-loader进行把d3的给按照ie11的进行打包,去查了下babel-loader的官网,发现确实有这样的解决办法。但是发现还是不起作用。
- 后来一想干脆直接在打包之后的文件,也就是dist目录里边,重新执行一遍babel转义,把所有已经打包好的文件再重新转一遍,使用如下命令
npx babel --config-file ./babel.config.json --out-dir dist ./dist
但是发现这样完全处理完之后,确实没有关于箭头函数和symbol的语法错误了,但是还有有很多 无法获取未定义或 null 引用的属性的错误
- 后来想去引用babel-polyfill cdn来解决,发现也没啥用,后来一想干错直接用js判断是否是ie11,直接给出一个弹窗来提示就可以了。