import { NButton, NModal, NSpace, useDialog } from 'naive-ui'; import { defineComponent, onBeforeUnmount, ref } from 'vue'; import { useRouter } from 'vue-router'; import downBg from './images/downBg.png' import rocketIcon from './images/rocketIcon.png' import styles from './index.module.less' import axios from 'axios'; export default defineComponent({ name: 'router-error', setup() { const router = useRouter(); const dialog = useDialog(); let refreshing = false; const showModalMask = ref(false) // router.onError((error, to, form) => { // const str = error.message + ''; // const isChunkLoadFailed = str.indexOf('imported'); // console.log(error, to) // // const targetPath = router.history.pending.fullPath // if (isChunkLoadFailed != -1 && !refreshing) { // refreshing = true; // console.log('onError刷新'); // sessionStorage.setItem('isRouter','true') // showModalMask.value = true; // router.push(to.path) // setTimeout(()=>{ // sessionStorage.removeItem('isRouter') // },60000) // } // }); router.beforeEach(async (to, from, next) => { const flag = await versionCheck() if(flag){ setTimeout(()=>{ sessionStorage.setItem('isRouter','true') showModalMask.value = true setTimeout(()=>{ sessionStorage.removeItem('isRouter') },60000) },1000) } next(); }); 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(); // dialog.warning({ // title: '更新提示', // content: '网站有更新请点击确定刷新页面?', // positiveText: '确定', // negativeText: '取消', // onPositiveClick: () => { // } // }); } }); // 尝试监听install navigator.serviceWorker.addEventListener('controllerchange', () => { console.log('controllerchange刷新'); if (refreshing) { return; } const isRouter = sessionStorage.getItem('isRouter') if(!isRouter){ showModalMask.value = true } refreshing = true; }); } } onBeforeUnmount(()=>{ sessionStorage.removeItem('isRouter') }) checkNewVersion() const reloadPage = ()=>{ window.location.reload(); } // 版本监控 const versionCheck = async () => { if (import.meta.env === 'development') return const response = await axios.get('version.json') // eslint-disable-next-line no-undef console.log(__APP_VERSION__,response.data.version,__APP_VERSION__ !== response.data.version) if (__APP_VERSION__ !== response.data.version) { // eslint-disable-next-line no-undef return true }else { return false } } console.log( versionCheck(),' versionCheck()') return () =>
为提升您的用户体验,请刷新页面后使用
{/*