網站首頁 Vue 正文
問題現象
項目使用vue/cli3腳手架搭建的前端項目,vue版本為2.6.10。
browserslist的配置如下:
[ "> 1%", "last 2 versions"]
但開發環境的IE11打開顯示白屏,F12打開顯示:
分析過程
5306行顯示 "./node_modules/_debug@4.1.1@debug/src/browser.js"這個路徑報錯,由于eval()包含的代碼中有ES6的語法,IE不支持,查了網上很多資料都說使用babel-polyfill來解決。
現象一:IE不支持ES6語法
- Vuex requires a Promise polyfill in this browser
- "“Promise”未定義"
以上現象為IE不支持Promise,即不支持ES6語法。出現IE白屏和報SCRIPT1002錯誤的大都是此原因。當前處理起來也比較簡單,網上大部份資源都可以找到解決方案,就是使用babel-polyfill。
首先安裝babel-polyfill
npm install --save-dev babel-polyfill
然后在babel.config.js修改presets,內容如下:
// presets: [["@vue/app", {useBuiltIns: "entry",}]],// 此為vue/cli3 presets: [["@vue/cli-plugin-babel/preset", {useBuiltIns: "entry",}]],// 此為vue/cli4
解決方法一
main.js的第一行引入:
import 'babel-polyfill';
解決方法二:
vue cli官方推薦使用,前提是package.json安裝了core-js:
import 'core-js/stable';import 'regenerator-runtime/runtime';
解決方法三:
在vue.config.js里添加如下代碼:
configureWebpack: config => { config.entry.app = ["babel-polyfill", "./src/main.js"]; },
現象二:第三方插件引入導致
由于項目使用了長連接庫socket.io-client和vue-socket.io-extended,在main.js是中使用方法是:
import VueSocketIOExt from 'vue-socket.io-extended'; import io from 'socket.io-client'; const socket = io(process.env.VUE_APP_IO_URL); Vue.use(VueSocketIOExt, socket);
我把這四行代碼注釋掉之后神奇的IE不白屏了,但業務需要IE11是不能放棄長連接的,經過嘗試發現是socket.io-client這個插件在使用import引入時導致的問題。
解決方法一:
1、將main.js調整為:
import VueSocketIOExt from 'vue-socket.io-extended'; const socket = io(process.env.VUE_APP_IO_URL); Vue.use(VueSocketIOExt, socket);
2、socket.io-client改為在public/index.html文件head中引入:
<script src="https://cdn.bootcdn.net/ajax/libs/socket.io/2.3.0/socket.io.slim.js"></script>
解決方法二:
保留main.js對第三方插件的引入不變,只需要在vue.config.js的transpileDependencies添加要顯示依賴的插件即可:
transpileDependencies:['socket.io-client'], // transpileDependencies:['*'],
transpileDependencies的作用是:默認情況下 babel-loader 會忽略所有 node_modules 中的文件。如果你想要通過 Babel 顯式轉譯一個依賴,可以在這個選項中列出來。
現象三:本地環境正常,但生產環境仍舊白屏
發現引入一個多語言文件時,JSON沒有使用合適的逗號導致,如下:
當我我第8行的逗號去掉后,奇跡般正常了。
另外,如果前端工程引入的文件不在工程的根目錄下,也會出現這種情況。
原文鏈接:https://segmentfault.com/a/1190000025136115
相關推薦
- 2022-05-21 ASP.NET?MVC中_ViewStart.cshtml作用介紹_基礎應用
- 2023-04-20 ES6:字符串的擴展及新增方法
- 2022-07-10 Ubuntu 硬盤分區
- 2022-08-13 Flutter實現不同縮放動畫效果詳解_Android
- 2022-06-01 ASP.Net?Core中的日志與分布式鏈路追蹤_實用技巧
- 2022-11-07 一文教會你用python連接并簡單操作SQLserver數據庫_python
- 2023-02-27 pandas?pd.cut()與pd.qcut()的具體實現_python
- 2022-06-13 正則化DropPath/drop_path用法示例(Python實現)_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支