vuex.esm.js?e4c8:1134 [vuex] module namespace not found in mapMutations():
第一个问题:vuex.esm.js?e4c8:1134 [vuex] module namespace not found in mapMutations(): loginModule/第二个问题:vuex.esm.js?e4c8:985 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'c
第一个问题解决办法:
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。所以你们好好检查一下看看
更多推荐
所有评论(0)