企業微信清除快取後首次進入應用頁面空白
阿新 • • 發佈:2022-03-10
問題:
企業微信清除快取後首次點開應用(公司開發的專案,布在企業微信工作臺裡),頁面顯示空白。
重新整理、關閉後再開啟、在瀏覽器顯示都是正常的,清除快取後首次點開應用十次有九次都顯示空白。
排查:
空白頁面應該顯示的是登入頁面,在login.js、common.js、login.ejs等相關檔案裡alert除錯,發現只有login.ejs裡的alert彈出,其他檔案的alert沒有彈出,說明點選開啟應用時沒有進到login.js和common.js,也就是沒有載入外部js檔案。
用Charles代理除錯,看介面顯示304,說明在傳送請求後檢測到瀏覽器上有快取,載入了快取。
一開始是想著:手動新增兩個script標籤載入js檔案。但是會報錯babel啥的只能是唯一,而且很難定位到那兩個304的檔案src。
後來再試著:既然重新整理一下就加載出來了,那在login.ejs用window.location.reload()重新整理一下。然後又碰到了死迴圈,一直在重新整理這個頁面。難點就是一直在想怎麼避免死迴圈,最後想到了用sessionStorage判斷一下。
let tag = sessionStorage.getItem('reloadTag'); if (!tag) { window.location.reload(); sessionStorage.setItem('reloadTag', true); }
我以為已經改好了,結果還有:清除快取後首次登入後也顯示空白頁面。
那就在index.ejs裡也重新整理一下,但是報錯vue-router.esm.js: Error: “Loading chunk 0 failed“。
百度了很久,最後大概總結出:
報錯原因:頁面非同步載入,訪問路由會卡住然後報錯。
解決方法:非懶載入路由。
const ReportCenter = r => require.ensure([], () => r(require('../page/reportCenter.vue')), "index");
改為:
import ReportCenter from '../page/reportCenter.vue'
問題解決。