f / vue-wait

Complex Loader and Progress Management for Vue/Vuex and Nuxt Applications
MIT License
2k stars 101 forks source link

[Bug Report] `[vuex] unknown action type: wait/start` occurred on Vue TypeScript #96

Open runyasak opened 4 years ago

runyasak commented 4 years ago

Step to reproduce

Using store.dispatch('wait/start', 'app loading', { root: true }) or wait/end on router.beforeEach in Vue TypeScript project.

However, it is working fine on Vue with CommonJS project.

Expected Behavior

It should be worked without any error or warning.

Actual Behavior

There have error for unknown action type.

[vuex] unknown action type: wait/start

Environment

faenir commented 3 years ago

Same problem

kenzik commented 3 years ago

Same issue, but seems to work otherwise. Any workaround?

bhaskar-nair2 commented 3 years ago

I think it is happening because when the dispatch happens, the wait store has not yet been registered, as of now I just added this line

if (this.hasModule('wait'))
    dispatch('wait/start', 'getCartItems', { root: true })

to remove the error

mesa4 commented 2 years ago

@bhaskar-nair2 i have another solution

@faenir @kenzik @runyasak

guys you can try to install vue-wait as a plugin

for example create file src/plugins/vue-wait.js and configure it like u wish

import { createVueWait } from 'vue-wait';

const vueWait = createVueWait({
    useVuex: true,
    vuexModuleName: 'wait',
    registerComponent: true,
    componentName: 'v-wait',
    registerDirective: true,
    directiveName: 'wait'
});

export default vueWait;

and after that you can import and use it in main.js file

import store from './store';
import { createApp } from 'vue';
import vueWait from './plugins/vue-wait';

import App from './App.vue';

const app = createApp(App);

app.use(store);
app.use(vueWait);

app.mount('#app');