mo 1 年之前
父节点
当前提交
c3dc345c33
共有 3 个文件被更改,包括 42 次插入27 次删除
  1. 4 0
      src/components/Application/Application.tsx
  2. 38 2
      src/components/RouterError/index.tsx
  3. 0 25
      src/router/router-guards.ts

+ 4 - 0
src/components/Application/Application.tsx

@@ -8,6 +8,8 @@ import {
 export default defineComponent({
   name: 'application-page',
   setup(props, { slots }) {
+
+
     return () => (
       <NDialogProvider>
         <NNotificationProvider>
@@ -17,5 +19,7 @@ export default defineComponent({
         </NNotificationProvider>
       </NDialogProvider>
     );
+
+
   }
 });

+ 38 - 2
src/components/RouterError/index.tsx

@@ -8,11 +8,16 @@ export default defineComponent({
     const router = useRouter();
     const dialog = useDialog();
     let isOpen = false;
-    router.onError(error => {
+
+
+
+
+    router.onError((error, to, form) => {
       const str = error.message + '';
       const isChunkLoadFailed = str.indexOf('imported');
-      console.log(error)
+      console.log(error, to)
       // const targetPath = router.history.pending.fullPath
+
       if (isChunkLoadFailed != -1 && !isOpen) {
         isOpen = true;
         dialog.warning({
@@ -21,11 +26,42 @@ export default defineComponent({
           positiveText: '确定',
           negativeText: '取消',
           onPositiveClick: () => {
+            router.push(to)
             window.location.reload();
           }
         });
       }
     });
+
+    const checkNewVersion = 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);
+          });
+          if (flag) {
+            window.location.reload();
+          }
+        });
+
+        // 尝试监听install
+
+        let refreshing = false;
+        navigator.serviceWorker.addEventListener('controllerchange', () => {
+          console.log('controllerchange');
+          if (refreshing) {
+            return;
+          }
+          refreshing = true;
+          window.location.reload();
+        });
+      }
+    }
+
+    checkNewVersion()
     return () => <div></div>;
   }
 });

+ 0 - 25
src/router/router-guards.ts

@@ -29,31 +29,6 @@ export function createRouterGuards(router: Router) {
     // console.log(to, '修改标题');
     // console.log('access token');
     document.title = to.meta.title ? to.meta.title : ('音乐数字课堂' as string);
-    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);
-        });
-        if (flag) {
-          window.location.reload();
-        }
-      });
-
-      // 尝试监听install
-
-      let refreshing = false;
-      navigator.serviceWorker.addEventListener('controllerchange', () => {
-        console.log('controllerchange');
-        if (refreshing) {
-          return;
-        }
-        refreshing = true;
-        window.location.reload();
-      });
-    }
 
     if (!isChrome()) {
       return;