Vue CLI3不兼容IE11打开空白报错SCRIPT1003: 缺少 ‘:‘

简介: Vue CLI3不兼容IE11打开空白报错SCRIPT1003: 缺少 ‘:‘

一、问题描述

Vue CLI3打包上线后的代码使用IE11打开后是空白的,控制台报错:

SCRIPT1003: 缺少 ':'
app.js (304501,83045)

其他浏览器打开没问题,问题定位在:存在不兼容IE的代码

1.png

二、问题分析

首先要知道,IE不支持函数简写

data(){

return {}
}

只能识别这种形式

 data: function () {
return {}
}

还有其他的不兼容之处,最笨的办法是手动修改所有不兼容的地方

当然还有更优的解

看下配置文件package.json中设置的兼容浏览器配置

"browserslist": [
"> 1%",
"last 2 versions"
]

查询一下配置所代表的的浏览器, 可以发现IE10IE11都在其列,

所以,项目本身的代码应该是没问题的

https://browserl.ist/

image.png

点击控制台报错的地方app.js,发现是一个模块不支持IE导致的

3.png

三、问题处理

最简单的方式是将不兼容的第三方模块换掉,如果确实需要那此法不可行

另外一个方式是使用@babel/polyfill + babel.config.js配置

1、安装依赖

cnpm i @babel/polyfill -S

2、入口文件 main.js 引入依赖

import '@babel/polyfill';

3、修改 babel.config.js

module.exports = {
presets: [
[
'@vue/app',
{
useBuiltIns: 'entry'
}
]
],
};

4、修改 vue.config.js


默认情况下 babel-loader 会忽略所有 node_modules 中的文件。如果你想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来。


依赖较多,索性将所有的依赖都加上,不过会增加打包后的体积,比如我的项目从7.5M增加到了19.6M



module.exports = {
transpileDependencies: process.env.NODE_ENV === "development" ? ["*"] : [],
}

另外,如果是babel-polyfill + webpack.config.js网上很多文章都是说这个的,可以参看:

https://github.com/PanJiaChen/vue-element-admin/wiki


参考

  1. Vue CLI浏览器兼容性
  2. Vue CLI 3 配置兼容IE10
  3. vue cli3 创建的项目在IE11中运行,出现白屏,通过console调试发现报错SCRIPT1003: 缺少 ':'文件: app.js,行: 7391,列: 3 #4131



            </div>
目录
相关文章
|
数据格式
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
本文介绍了在ElementUI和ElementPlus中使用`el-table`组件实现合并行功能的技巧,包括多列合并和单列合并的方法,并提供了相应的示例代码和运行效果。
10158 46
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
|
存储 算法 安全
国密算法及简单使用
国密算法,即国家密码局认定的国产密码算法,主要用于保护国家关键信息基础设施和商业领域的加密通信和数据安全。根据 2019年10月26日第十三届全国人民代表大会常务委员会第十四次会议通过的《中华人民共和国密码法》,国家对密码实行分类管理,密码分为核心密码、普通密码和商用密码
1836 4
|
5月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
1165 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
项目打包报错“caniuse-lite is outdated. Please run next command `npm update`”的解决方案
项目打包报错“caniuse-lite is outdated. Please run next command `npm update`”的解决方案
1141 1
|
JavaScript API
Vue3基础(24)___vue3中不再支持filters
Vue 3中不再支持filters(过滤器)
246 2
|
9月前
|
JavaScript 前端开发 UED
PDF在线预览实现:如何使用vue-pdf-embed实现前端PDF在线阅读
本文详细介绍了如何在Vue项目中使用vue-pdf-embed实现PDF文件的在线展示。从项目初始化、插件集成到高级功能的实现和部署优化,希望对你有所帮助。在实际项目中,灵活运用这些技术可以大大提升用户体验和项目质量。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JSON 小程序 JavaScript
|
Linux 数据安全/隐私保护
Linux命令setfacl详解
`setfacl`是Linux中用于设置文件访问控制列表的命令,提供比传统权限更细粒度的控制。它允许为特定用户或组添加、修改或删除权限,适用于多用户环境和复杂场景。常用参数包括`-m`(修改规则)、`-x`(删除规则)、`-R`(递归设置)和`-d`(设置默认ACL)。例如,`setfacl -m u:user1:rw- file.txt`给用户`user1`赋予文件`file.txt`的读写权限。记得在使用前确认文件系统支持ACL,并谨慎规划和审查权限设置。
|
JavaScript 开发工具 git
工程化:Commitlint / 规范化Git提交消息格式
通过这些思维导图和分析说明表,您可以更加直观地理解Commitlint的安装、配置和使用方法,从而有效规范Git提交消息,提升团队协作效率和代码质量。
968 9