Как определить зрегистрирован ли плагин Vue?

Скрипты предстоит работать в неизвестной среде, где может быть уже загружен Vue и какие-то другие библиотеки, а может быть и нет.

Для этого создал такой вот скелет инициализации:
init: function (conteinerId,tags) {
        tags = tags || [];
        
        this._checkDependencies().then(() => {
            
            
            console.log('Go')
        });
        
    },
    
    _checkDependencies: function () {
        
        var promise = new Promise(function(resolve, reject) {resolve(true);});
        
        if (typeof Vue == 'undefined')
                promise = promise.then(script => this._loadScript('//cdn.jsdelivr.net/npm/vue@2/dist/vue.js'));
        
        if (typeof axios == 'undefined')
                promise = promise.then(script => this._loadScript("//unpkg.com/axios/dist/axios.min.js"))
        
        promise = promise.then(script => this._loadScript("//unpkg.com/vue-axios@2.1.5/dist/vue-axios.min.js"))
        
        return promise;
    },
    
    _loadScript: function (src) {
        return new Promise(function(resolve, reject) {
            let script = document.createElement('script');
            script.src = src;
            script.type = 'text/javascript';
            
            script.onload = () => resolve(script);
            script.onerror = () => reject(new Error(`Ошибка загрузки скрипта ${src}`));
            
            document.head.append(script);
        });
    }

И все хорошо, если не загружен еще на страницу vue-axios, но если он есть - вылетает ошибка Uncaught TypeError: Cannot redefine property: axios из-за того что я загружаю его повторно. Как проверить что vue-axios уже загружен? Или что он хотя бы зарегистрирован во Vue?

Пытался смотреть код плагина, но он мне не очень понятен - я не вижу чтобы он создавал какие-то глобальные переменные на наличие которых можно ориентироваться.
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
А плагин не добавляет что-то типа Vue.axios ?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы