Магазин vuex работает на сервере Dev, но не в рабочей сборке - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть два (больших) объекта javascript, которые находятся в отдельных файлах в моем каталоге ресурсов.Оба они должны быть импортированы в мои файлы store.js.

Соответствующая часть моего store.js

import Vue from 'vue'
import Vuex from 'vuex'
import pathify from 'vuex-pathify'
import {make} from 'vuex-pathify'
import requiredParam from '@/assets/requiredParameters.js'
import optionalParam from '@/assets/optionalParameters.js'

Vue.use(Vuex);

var rp = JSON.parse(JSON.stringify(requiredParam));
var op = JSON.parse(JSON.stringify(optionalParam));

console.log(requiredParam,optionalParam);
console.log(rp,op);

var state = {
    requiredParam: rp,
    optionalParam: op,
    jobId: null,
    jobHistory: null,
    jobStatus: null,
    messages: [],
    geocodeReq: null,
    geocodeModal: false,
};
console.log(state)

const mutations = make.mutations(state);

export default new Vuex.Store({
  plugins: [pathify.plugin],
  state,
  mutations,

  getters: {
    orderLen: (state)=>{
        console.log(state)
        return Object.keys(state.requiredParam.Order).length
    },

    depotLen: (state)=>{
        return Object.keys(state.requiredParam.Depot).length
    },

    routeLen: (state)=>{
        return Object.keys(state.requiredParam.Route).length
    },

  },


})

Все отлично работает на сервере разработки Vue CLI 3.Когда я запускаю сборку и смотрю на консоль производственной сборки, все выглядит правильно, пока не будет зарегистрировано состояние.Обязательный параметр и необязательный параметр оба не определены, хотя rp и op правильно зарегистрированы в консоли.

Я знаю, что это как-то связано с веб-пакетом, но я никогда не использовал его раньше, поэтому не уверен, почему это происходит.

Есть ли решение этого или лучший способ подойти к проблеме?

Объекты должны находиться в отдельных файлах, так как они будут редактироваться кем-то, у кого очень мало знаний по JavaScript.

Первоначально файлы были .JSON, и я попытался

var state = {
    requiredParam: require('@/assets/requiredParameters.json'),
    optionalParam: require('@/assets/optionalParameters.json'),
    jobId: null,
    jobHistory: null,
    jobStatus: null,
    messages: [],
    geocodeReq: null,
    geocodeModal: false,
};

но это не сработало, поскольку в веб-пакете файлы не были правильно включены в папку ресурсов.

1 Ответ

0 голосов
/ 11 декабря 2018

Я обнаружил проблему, это на самом деле не имело ничего общего с веб-пакетом, и мне потребовалось целую вечность, чтобы выяснить это.

Рабочий сервер размещался на репозитории github pages, который использовался для размещения предыдущей версииприложение.

Существовала переменная localStorage, оставшаяся от предыдущей версии и имеющая то же имя, что и переменная, используемая в текущей версии.

Это приводило к установке значения хранилищадо неопределенного значения, и так как консольный журнал регистрирует только ссылку на хранилище, к тому времени, когда я увидел значение, оно уже было перезаписано нулем.

...