123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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;
|