第一个问题解决办法:

vuex.esm.js?e4c8:985 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'commit')

报错原因:虽然使用了vuex但是store没有在main.js中注册使用

解决:在main.js中加入下面高亮的代码

import Vue from 'vue'

import App from './App.vue'

import VueRouter from 'vue-router'

import router from './router'

import element from 'element-ui'

import 'element-ui/lib/theme-chalk/index.css';

import './assets/reset.css'

import store from './store'

//导入语言

import i18n from './language/index'

import api from './api/index'

Vue.prototype.$api=api;

Vue.config.productionTip = false

Vue.use(VueRouter)

Vue.use(element)

new Vue({

  store,

  router,

  i18n,

  render: h => h(App),

}).$mount('#app')

 第二个问题解决方法:

 解决上面的之后有报:

 vuex.esm.js?e4c8:1134 [vuex] module namespace not found in mapMutations(): loginModule/

 介绍常规解决办法:

  • 检查小仓库中是否使用了命名空间  namespaced:true,    如果没有使用加入就好了,此时我的小仓库是叫loginModule。

 

  •  检查关键字是否拼写错误
  • 好了,到了我的问题了,真给我看吐了,搞了半天才解决。

解决示例如下:

 分析上图:你引人模块时起了一个别名叫lo,那么你在modules中注册的名字就应该是你的小仓库的名字:别名。

如果你的名字不符合标准也是会报这个错误的,而且我看这个错误也很少见

所以为了简单起见导入文件时最好就和小仓库名字一样,就可以简写啦

import Vue from 'vue'
import Vuex from 'vuex'
import loginModule from './modules/loginModule'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
    loginModule
  }
})

第三个问题解决:

vuex.esm.js?e4c8:460 [vuex] unknown mutation type: CATEGORYLIST 

  •  常见的解决办法:把你的小仓库里面的命名空间注释掉,也就是namespaced:true 注释掉
  • 不常见的,也就是我的问题,是因为小仓库里面的mutation没有加s。。。。啊啊啊啊真痛苦,搞了好久没找出来错误,原来小仓库里面的mutation也要加s,正确的写法是所有的仓库里面都是actions、mutations。所以你们好好检查一下看看
Logo

前往低代码交流专区

更多推荐