TypeError: Cannot read property 'dispatch' of undefined尝试提交 Login.vue 表单时出现错误。我将我的更改function()为只是data()等,就像建议的 SO 答案一样,但这并没有帮助......index.js:import Vue from 'vue';import Vuex from 'vuex';import auth from './store/auth.module.js';Vue.use(Vuex);export default new Vuex.Store({ //plugins: [createPersistedState({ storage: sessionStorage })], state: { }, mutations: { }, actions: { }, modules: { auth }})主.js:import Vue from 'vue'import App from './App.vue'import router from './router';import store from './store/auth.module';import "./assets/css/tailwind.css";import '@/assets/css/tailwind.css';Vue.config.productionTip = false;new Vue({ router, store, render: h => h(App),}).$mount('#app');auth-header.js:export default function authHeader() { let user = JSON.parse(localStorage.getItem('user')); if (user && user.accessToken) { return { Authorization: 'Bearer ' + user.accessToken }; } else { return {}; }}user.service.js:import axios from 'axios';import authHeader from './auth-header';const API_URL = 'localhost:8088/testproject/api/users';class UserService { getPublicContent() { return axios.get(API_URL + '/all'); } getUserBoard() { return axios.get(API_URL + '?role=user', { headers: authHeader() }); } getModeratorBoard() { return axios.get(API_URL + '?role=mod', { headers: authHeader() }); } getAdminBoard() { return axios.get(API_URL + '?role=admin', { headers: authHeader() }); }}export default new UserService();
4 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
猜测一下,我会说问题出在main.js
// main.js
import store from './store/auth.module';
这似乎是在导入您的一个商店模块,它不会是一个Vuex.Store实例。
在main.js,你需要导入商店index.js
// main.js
import store from './index.js'
通过不导入store/index.js,您也错过了所有重要的
Vue.use(Vuex)
繁花如伊
TA贡献2012条经验 获得超12个赞
你能检查一下你是否正确地导入了 Vuex 吗?
我觉得 phil 的回答是正确的,但这里还有一些可能有助于解决问题的额外阅读:cannot read property 'dispatch' of undefined in Vuex
慕容708150
TA贡献1831条经验 获得超4个赞
请检查您的文件夹结构是否如下所示。
存储文件夹->(包含)auth.module,index.js(您提到的第一个代码片段)。
现在将商店导入到main.js
如下所示。
import store from './store'
现在你剩下的代码应该可以工作了。
MYYA
TA贡献1868条经验 获得超4个赞
将此行添加到您的main.js文件中:
import store from '../yourPath';
vue.$store = store
这将全局设置存储对象。所以你可以通过使用从任何组件访问它this
添加回答
举报
0/150
提交
取消