Browse Source

提前报错拦截

1
mo 1 year ago
parent
commit
ccc58d4c00
2 changed files with 32 additions and 20 deletions
  1. 31 0
      index.html
  2. 1 20
      src/components/RouterError/index.tsx

+ 31 - 0
index.html

@@ -176,7 +176,38 @@
       }
     }
     (function (window) {
+      const reloadPage = async () => {
+        if ('serviceWorker' in navigator) {
+          // let refreshing = false
+          const flag = (await caches.keys()).length > 0;
+          // console.log(caches.keys(), `0904路由更新有缓存${flag}`);
+          caches.keys().then(function (cacheNames) {
+            cacheNames.forEach(function (cacheName) {
+              caches.delete(cacheName);
+            });
+          });
+          // 尝试监听install
+        }
+        window.location.reload();
+      }
+      const isChromeError = (error) => {
+        const str = error.message + '';
+        const isChunkLoadFailed = str.indexOf('imported');
+        if (isChunkLoadFailed != -1 && !refreshing) {
+          refreshing = true;
+          // console.log('onError刷新');
+          sessionStorage.setItem('isRouter', 'true')
+          reloadPage()
+          // showModalMask.value = true;
+          // router.push(to.path)
 
+          // setTimeout(()=>{
+          //   sessionStorage.removeItem('isRouter')
+          // },60000)
+        }
+        // console.log(error, '这是js的报错 希望可以从错误类型判断')
+      }
+      window.addEventListener('error', isChromeError, true)
       // if ('serviceWorker' in navigator) {
       //   // let refreshing = false
       //   let flag = caches.keys().length > 0

+ 1 - 20
src/components/RouterError/index.tsx

@@ -13,26 +13,7 @@ export default defineComponent({
     let refreshing = false;
     const showModalMask = ref(false)
     const route = useRoute()
-    const isChromeError = (error:any)=>{
-      const str = error.message + '';
-      const isChunkLoadFailed = str.indexOf('imported');
-      if (isChunkLoadFailed != -1 && !refreshing) {
-        refreshing = true;
-        // console.log('onError刷新');
-        sessionStorage.setItem('isRouter','true')
 
-        console.log('浏览器缓存===>')
-        reloadPage()
-          // showModalMask.value = true;
-          // router.push(to.path)
-
-        // setTimeout(()=>{
-        //   sessionStorage.removeItem('isRouter')
-        // },60000)
-      }
-      // console.log(error, '这是js的报错 希望可以从错误类型判断')
-    }
-    window.addEventListener('error', isChromeError, true)
     router.onError((error, to, form) => {
       const str = error.message + '';
       const isChunkLoadFailed = str.indexOf('imported');
@@ -106,7 +87,7 @@ export default defineComponent({
     checkNewVersion()
     onBeforeUnmount(()=>{
       sessionStorage.removeItem('isRouter')
-      window.removeEventListener('error', isChromeError,)
+      // window.removeEventListener('error', isChromeError,)
     })