vue项目在IE上显示空白 报错SCRIPT1006: 缺少 ')'
文章目录1.项目中安装`babel-polyfill`,进行配置2.在ie浏览器中调试出错位置vue项目在ie中不能显示,一直报错,根据网上教程安装了babel-polyfill,可还是不行,本文教你如何解决该问题1.项目中安装babel-polyfill,进行配置如果你已经配置了可以跳过该步骤安装:npm instatll babel-polyfill --save在 web...
vue项目在ie中不能显示,一直报错,根据网上教程安装了
babel-polyfill
,可还是不行,本文教你如何解决该问题
1.项目中安装babel-polyfill
,进行配置
如果你已经配置了可以跳过该步骤
- 安装:
npm instatll babel-polyfill --save
- 在
webpack.base.conf.js
中找到 入口entry
,
替换为module.exports = { // ... entry: { app: './src/main.js' }, // ...
module.exports = { // ... entry: { app: ["babel-polyfill", "./src/main.js"], }, // ...
- 如果引入
babel-polyfill
还有一些高级语法没有被编译,在项目根目录下配置.babelrc
文件(没有该文件就创建一个),官网如下: https://www.babeljs.cn/ 根据项目选择引入什么插件,以及如何配置,详情查看官网。
新建的.babelrc
可以添加如下配置代码
{
"presets": [
["env", {
"modules": false,
"useBuiltIns": "entry"
}],
"stage-2"
]
}
配置代码解读:
(1) modules
该参数的含义是:启用将ES6模块语法转换为另一种模块类型。将该设置为false就不会转换模块。默认为 ‘commonjs’.
这样做的目的是:以前我们需要使用babel来将ES6的模块语法转换为AMD, CommonJS,UMD之类的模块化标准语法,但是现在webpack都帮我做了这件事了,所以我们不需要babel来做,因此需要在babel配置项中设置modules为false,因为它默认值是commonjs, 否则的话,会产生冲突。
(2) `useBuiltIns是指定哪些内容需要被 polyfill(兼容) 的设置,有三个设置选项
false - 不做任何操作
entry - 根据浏览器版本的支持,将 polyfill 需求拆分引入,仅引入有浏览器不支持的polyfill
usage - 检测代码中 ES6/7/8 等的使用情况,仅仅加载代码中用到的 polyfill
(3) stage-2
官方预设(preset), 有两种,一个是按年份(babel-preset-es2017),一个是按阶段(babel-preset-stage-0)。 这主要是根据TC39 委员会ECMASCRPIT 发布流程来制定的。
因此到目前为止 有4个不同的阶段预设:stage-0,1,2,3以上每种预设都依赖于紧随的后期阶段预设,也就是说stage-0是包括stage-1的,以此类推。
因此 stage-0包含stage-1/2/3的内容。所以如果我们不知道需要哪个stage-x的话,直接引入stage-0就好了。
目前一般是使用stage2 (https://babeljs.io/docs/en/babel-preset-stage-2) 该特性规范己经被起草,将会被纳入标准里.
2.在ie浏览器中调试出错位置
运行之后发现这样报错
点击 app.js 跳转到出错位置
其实这样就是这里有部分的ES6代码没有被转换,就会出现报错,把这个报错位置前提示的这个报错路径拷贝下来 node_modules/resize-detector/esm
,
在 webpack.base.conf.js
中,下图位置
插入 resolve('node_modules/resize-detector/esm')
: 里面的 node_modules/resize-detector/esm'
就是刚才报错的那个路径
就用同样的方法,就可以解决没有被转换的 ES6代码
更多推荐
所有评论(0)