json - vuex 商店可以在开发服务器中使用,但不能在生产版本中使用

标签 json vue.js webpack vuex vue-cli-3

我有两个(大)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 正确记录在控制台中,必需的参数和可选的参数都未定义。

我知道这与 webpack 有关,但我以前从未使用过它,所以我不确定为什么会发生这种情况。

是否有解决方案或更好的方法来解决该问题?

对象需要位于单独的文件中,因为它们将由具有很少 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,
};

但这不起作用,因为 webpack 没有将文件正确包含在 Assets 文件夹中。

最佳答案

我发现了这个问题,它实际上与 webpack 无关,并且花了我很长时间才弄清楚。

生产服务器由 github Page 存储库托管,该存储库用于托管应用程序的早期版本。

有一个 localStorage 变量仍然是以前版本遗留下来的,它与当前版本使用的变量同名。

这导致存储值被设置为未定义的值,并且由于控制台日志仅记录对存储的引用,因此当我看到该值时,它已经被 null 覆盖。

关于json - vuex 商店可以在开发服务器中使用,但不能在生产版本中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53714424/

相关文章:

php - Twitter bootstrap typeahead 返回多个值并填充编辑框

javascript - VUE-指令中的事件监听器无法读取方法中定义的函数

reactjs - React-create-app 中 babel loader 的问题

Webpack 和 CommonsChunkPlugin,为每个异步 block 分离出 node_modules

php - 在不使用数组的情况下使用json从数据库中获取数据

c# - 在序列化时将字符串属性值转换为 base64

javascript - 尝试定义函数时,位置 1 出现 JSON 未定义错误

javascript - 如何对一个 textarea 组件的文本值进行数据绑定(bind)并更新它?

javascript - 如何组织Vue-JS : Non Javascript way?

javascript - 通过 webpack 为 Laravel 添加 moment