index.tsx 875 B

12345678910111213141516171819202122232425262728293031
  1. import { useDialog } from 'naive-ui';
  2. import { defineComponent } from 'vue';
  3. import { useRouter } from 'vue-router';
  4. export default defineComponent({
  5. name: 'router-error',
  6. setup() {
  7. const router = useRouter();
  8. const dialog = useDialog();
  9. let isOpen = false;
  10. router.onError(error => {
  11. const str = error.message + '';
  12. const isChunkLoadFailed = str.indexOf('imported');
  13. // const targetPath = router.history.pending.fullPath
  14. if (isChunkLoadFailed != -1 && !isOpen) {
  15. isOpen = true;
  16. dialog.warning({
  17. title: '更新提示',
  18. content: '网站有更新请点击确定刷新页面?',
  19. positiveText: '确定',
  20. negativeText: '取消',
  21. onPositiveClick: () => {
  22. window.location.reload();
  23. }
  24. });
  25. }
  26. });
  27. return () => <div></div>;
  28. }
  29. });