1. 程式人生 > 其它 >企業微信清除快取後首次進入應用頁面空白

企業微信清除快取後首次進入應用頁面空白

問題:

企業微信清除快取後首次點開應用(公司開發的專案,布在企業微信工作臺裡),頁面顯示空白。

重新整理、關閉後再開啟、在瀏覽器顯示都是正常的,清除快取後首次點開應用十次有九次都顯示空白。

 

排查:

空白頁面應該顯示的是登入頁面,在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'

問題解決。