在IE打开项目,控制台报错,如下:
以下罗列百度上vue项目兼容IE的方式(有说法项目最多兼容到IE9)
方式一:安装babel-polyfill
1、使用npm安装babel-polyfill(有说法不能安装在devDependencies,要装在dependencies)
2、在文件入口main.js文件的顶部添加:import 'babel-poly'或者webpack.config.js或webpack-basse-config.js修改配置(有说法即要在main.js的顶部添加import 'babel-polyfill'也要修改配置),代码如下
3、如果使用vuex,则在vuex的index.js文件中也要使用import "babel-polyfill",最好放在import Vuex from "vuex"的前面
方式二:添加"<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>"
方式三:报语法错误的,点击app.js查看语法错误位置,在引用位置找到对应的js,将js内的es6写法转成es5(前置条件是自己写的文件),如图(element UI报错)
引用别人的插件则拆分引用,如
方式四:webpack-dev-server版本太高,要将版本换成不高于2.6.1
出现这个报错主要是因为项目使用了const等语法,然而IE2.6.1以下不兼容es6语法,不过这个问题只有在开发模式才出现,将项目打包放到服务器,就没有问题了。
方式五:修改配置文件babelrc
在.bablrc文件中增加"useBuilIns":"entry"
方式六:IE浏览器autoprefixer自动补全css前缀无效
IE发现使用内联样式,autoprefixer无法生效,要写到style标签内
方式七:插件不兼容(例如vue-echarts)
1、cnpm改为npm,npm i echarts vue-echarts -S
2、npm I resize-detector -S
3、vue.config.js文件写入
个人操作:本人照着上面的操作将webpack-dev-server的版本为2.6.1,结果还是报错,去定位一下位置在
显然是swiper插件的问题,百度swiper兼容IE,有说法是import直接引入swiper模块,保留了es6语法,试试"import swiper from 'swiper/dist/js/swiper.js'"(node_modules的swiper文件夹下swiper.js对应的文件),复制上去,保存代码的时候没有报上图的错误。在webpack-dev-server的版本是2.6.1,IE11和IE10(IE11浏览器仿真IE10)的效果会报这个错误:
百度上说IE10、IE11的websocket的数量最多只能有6个,多余6个将报错,去除报错的方式
方式一:
个人做过尝试,可以,但是你总不能让用户自己去做配置
方式二:
改注册表目录HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer的内容(具体内容自行百度)
没有做尝试,同第一点一样,对我来说不适用,暂时跳过,先做兼容IE9的内容
在使用模拟的IE9环境下,会出现如下错误
百度上说要安装classlist-polyfill-save,在webpack-base-config.js添加配置
刷新页面后,可以了。
自己有尝试将main.js引用的"import 'swiper/css/swiper.min.css'"改为"import 'swiper/css/swiper.css'",项目没有报错了,但是swiper的效果没有出来,个人用的swiper版本是5.3.9,我想又设计swiper5兼容IE9。
在webpack-dev-server的版本是2.9.1,IE11完全没有问题,模拟的IE10,IE9环境下报错
看来确实是webpack-dev-server.js版本的问题
后续,在另一个项目要兼容IE9/IE10,发现只要@babel/polyfill,在配置想要的信息,就可以了
1、安装npm install --save @babel/polyfill
2、package.json中找到browserslist,配置
3、在main.js引入@babel/polyfill
4、在babel.config.js配置(公司使用renren-fast-vue的项目不用配置也可以)