import { browser } from '@/helpers/utils'; import { showDialog } from 'vant'; import { createRouter, createWebHashHistory, Router } from 'vue-router'; import { postMessage } from '@/helpers/native-message'; import routes from './routes-common'; const router: Router = createRouter({ history: createWebHashHistory(), routes, scrollBehavior(to) { if (to.hash) { return { el: to.hash, behavior: 'smooth' }; } } }); let isOpen = false; router.onError(error => { if (error instanceof Error) { const isChunkLoadFailed = error.name.indexOf('chunk'); const targetPath = router.currentRoute.value.fullPath; console.log(error); if (isChunkLoadFailed && !isOpen) { isOpen = true; showDialog({ title: '更新提示', message: 'APP有更新请点击确定刷新页面?', confirmButtonColor: 'var(--van-primary)' }).then(() => { // on close if (browser().isApp) { postMessage({ api: 'back' }); } else { location.hash = targetPath; window.location.reload(); } }); } } }); export default router;