Access Vuex inside javascript

  • How to use vuex (like this.$store.getters …) in a .js file in the project as this.$store won’t work any more outside the vue component? I tried this but the getters returns a literal code.

  • @ilabutk it will work as long as you use function and not =>, i would import the store instance tho, just export it from your store/index.js. ie

    let store
      store = new Vuex(...)
    export { store }
    import { store } from 'src/store'

  • Thank you @metalsadman

    Here is /src/store/index.js

    let store = null
    export default function () {
      store = new Vuex.Store({
        modules: {
        plugins: [createPersistedState()], // to persist
        // enable strict mode (adds overhead!)
        // for dev mode only
        strict: process.env.DEV
      return store
    export { store }

    In another router-auth.js, I have

    import { store } from 'src/store'
    console.log(':: ROUTER-AUTH ::')

    It shows store null! // I just realized that the router-auth.js is a root file!! Could that be the reason? I tested your method in a regular .js file and it works. How can we let the router-auth.js boot after the store is created? Thank you!

  • @ilabutk what router-auth.js? If you are in a boot file then you shouldn’t import, just pass the store as a parameter in your export default function., same in router/index.js.

  • @metalsadman Of course!! Thank you. router-auth.js is a boot file that I added to check routes authentications). // Your tip on using Vuex in other .js files really helped!

  • The working version for others future reference::

    export default ({ router, store }) => {
      router.beforeEach((to, from, next) => {
        const loggedIn = store.getters['user/getLoggedIn']
        const guestRoutes = ['/', '/login', '/suport'] // guests route
        if (!loggedIn && !guestRoutes.includes(to.path)) {
        } else {

Log in to reply