Ошибка при импорте миксина, когда цель включает ссылку на вызывающий файл? - PullRequest
0 голосов
/ 03 мая 2019

У меня есть миксин выхода из системы, который используется как часть основной навигации моего приложения Nativescript.Он выполняет несколько функций выхода из системы, чтобы очистить некоторые данные, отправить сообщения обратно в API для захвата этих данных и т. Д. *

Включая его в код навигации, онработает полностью, как и ожидалось!

Однако некоторые ошибки API (например, 400 Unauthorized) должны выгнать пользователя из системы - но также вызвать все те же сценарии выхода из системы, чтобы убедиться, что их выход не наполовину.сделанный.

Когда я включаю миксин выхода из системы с API, я получаю следующее сообщение об ошибке:

Файл ОШИБКИ КОНСОЛИ: ///app/vendor.js: 9994: 20:[Vue warn]: Ошибка при рендеринге: «Ошибка типа: undefined не является объектом (оценивающим« options.components »)», найденным в --->

У меня не было многоудачи в устранении этого.Я пробовал разные способы вызова импорта ... import api from '~/mixins/api', import api from './api', import {api} from '.api', ...

Мне удалось сузить проблему до того момента, когда я просто включил APImixin в logout.js, ошибка выскакивает.Даже если я возьму все остальное, только API import + mixin.

Интересно, не зациклился ли я на какой-то бесконечной гибели цикла?Метод, вызывающий метод, который вызвал этот метод ... или, если есть простое решение, которое я полностью упускаю.

Ниже приведен некоторый псевдо-код того, что происходит в моем приложении:

~ / mixins / api.js

import logout from '~/mixins/logout';

export default {
    mixins: [logout],
    methods: {
        callAPI(url){
            // API connection stuff...
            // if( response.code === 400 ){
                this.logout();
            // }
        }
    }
};

~ / mixins / logout.js

import api from '~/mixins/api';

export default {
    mixins: [api],
    methods: {
        logout(){
            // logout scripts...
            this.callAPI('logout');
            this.$navigateTo('login');
        }
    }
};

Самостоятельно все отлично работает :) Моя ошибка закралась, когда я попытался сделатькомбинация.

...