andrufka46rus
@andrufka46rus
веб-рукожоп

Как победить ошибку «Cannot access before initialization»?

Добрый день. Использую webpack+babel+vue.
У меня 2 файла app.js и methods.js
app.js содержит объект Vue и константу с объектом.
import {VUE_METHODS} from 'methods';

export const NDS = {
    title: 'НДС 20%'
};

VUE_METHODS.methods.objectFreeze(NDS);

export let app = new Vue({
    el      : '#app',
    mixins  : [VUE_METHODS],
    //бла бла бла дальше не важно
});


methods.js содержит примесь
import axios from 'axios';
import {NDS} from 'app';

export const VUE_METHODS = {
    data    : function () {
        return {
            nds: NDS
        }
    },
    computed: {
       //бла бла бла
    },
    methods : {
        objectFreeze         : function (_o, _property = null) {
            //не важно
        }
    }
};


В файле сборки вызываю их так
import 'methods';
import 'app';


Все компилится но в браузере при использовании скомпилиного файла вылетает в консоли ошибка
Uncaught ReferenceError: Cannot access 'ne' before initialization

, где ne - это VUE_METHODS. А ругается на строке с
VUE_METHODS.methods.objectFreeze(NDS);

Как решить ошибку?
  • Вопрос задан
  • 26981 просмотр
Решения вопроса 1
@Delagen
Техногик
У вас классический пример циклической зависимости, вынесите NDS в отдельный модуль, а то у вас получается цепочка загрузки app -> methods -> app
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы