У меня есть два (больших) объекта 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,
};
но это не сработало, поскольку в веб-пакете файлы не были правильно включены в папку ресурсов.