user11461061
user11461061

Reputation:

Vue.js use method of undefined

Currently I am working with Vue CLI version ^3.0.0 and Vuex ^3.6.0, but when I want to use Vue.use(Vuex). It says in the browser cannot read use of undefined.

Code:

main.js

import App from './App.vue'
import store from './store'

new Vue({
    store,
    render: h => h(App)
}).$mount('#app')

Store.js:

import Vue from 'vue';
import Vuex from 'Vuex';

Vue.use(Vuex);

export default Vuex.Store({
    state: {
        count: 0
    },
    mutations: {
        increment(state) {
            state.count++
        }
    }
})

enter image description here

Error received:

Uncaught TypeError: Cannot read property 'use' of undefined

Do you guys have any idea?

Thanks in advance.

Upvotes: 0

Views: 736

Answers (3)

Oleksii Zelenko
Oleksii Zelenko

Reputation: 2701

Store.js:

import { createStore } from 'vuex'

export default createStore({

state: {...},
mutations: {...},
action: {...},
getters: {...}

})

main.js


import App from './App.vue'
import { createApp } from 'vue'
import store from './store'

createApp(App)    
    .use(store)    
    .mount('#app')

Upvotes: 0

Hannah
Hannah

Reputation: 1143

If you're using Vue 3, it doesn't support global config. You'll need to do it like this I think:

import { createApp } from 'vue';
import { createStore } from 'vuex';

const store = createStore(
  // options
);

const app = createApp(
  // options
);

app.use(store);

Also you will need to upgrade to vuex@4 for Vue 3 support.

Upvotes: 1

shalini
shalini

Reputation: 1300

Move

import Vue from 'vue';
import Vuex from 'Vuex';

to main.js since you need to call before its initialize

Upvotes: 0

Related Questions