Как я могу исправить «Необработанный отказ от обещания» для моего приложения Vue? - PullRequest
0 голосов
/ 27 марта 2020

Для моего Vue приложения я столкнулся со следующей проблемой в IE: 'Необработанный отказ от обещания не определен' .

Я отследил проблему до аутентификации приложения. Но я не уверен, как справиться с этим. Я пробовал блоки try-catch вокруг функций next ().

Ниже кода аутентификации.

import router from '@/config/Router';
import CONST from '@/utils/Constants';
import ObjectHelper from "@/helpers/ObjectHelper";

class Auth {
    constructor() {
      router.beforeEach((to, from, next) => {
          if (to.matched.some(record => record.meta.requiresAuth)) {

            if (!Auth.isLoggedIn()) {
              next({path: CONST.ROUTE.SESSION.LOGIN});
            } else {
              next();
            }
          } else {
              next();
          }
      });
    }

    static logOut() {
      localStorage.clear();
      sessionStorage.clear();

      router.replace(CONST.ROUTE.SESSION.LOGIN);
    }

    static isLoggedIn() {
      return ObjectHelper.exists(localStorage.getItem(CONST.KEY.AUTH.ACCESS_TOKEN));
    }
}

export default Auth;

После this.$router.push(CONST.ROUTE.ORGANISATIONS.OVERVIEW); в моем логине-компоненте выдается ошибка.

Для полноты я также предоставляю код для маршрутизатора:

import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

export default new Router({
  base: process.env.BASE_URL,
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'home',
      component: () => import('@/views/home/home.vue')
    },{
      path: '/session',
      name: 'session',
      component: () => import('@/views/session/session.vue'),
      children: [
        {
          path: 'login',
          name: 'login',
          component: () => import('@/views/session/login/login.vue')
        },
        {
          path: 'logout',
          name: 'logout',
          component: () => import('@/views/session/logout/logout.vue')
        }
      ]
    },
    {
      path: '/organisations',
      alias: '/organisaties',
      component: () => import('@/views/organisations/organisations.vue'),
      children: [
        {
          path: '',
          name: 'organisations-overview',
          component: () => import('@/views/organisations/overview/overview.vue'),
          meta: {
            requiresAuth: true,
            can: 'edit-organisations',
            fail: '/session/logout'
          }
        },
        {
          path: ':uuid',
          name: 'organisation-edit',
          component: () => import('@/views/organisations/edit/edit.vue'),
          meta: {
            requiresAuth: true,
            can: 'edit-organisations',
            fail: '/session/logout'
          }
        }
      ]
    }
  ]
});

Кто-нибудь знает, как решить эту проблему? Большое спасибо!

1 Ответ

0 голосов
/ 15 апреля 2020

Я нашел решение для 'Unhandled Promise Rejection undefined' в IE. Мне нужно было добавить поддержку IE11 в мой проект Vue: 'babel-polyfill', 'weakmap-polyfill', 'core-js / es / set', 'core-js / es / map'. После этого все отлично работает.

...