2017-04-25 193 views
0
const store = new Vuex.Store({ 
    state: { 
     user: { 
      userName:'', 
      loggedInStatus: true, 
      authToken: '' 
     } 
    }, 

    mutations: { 
     addWebToken: function(state, webToken){ 
      state.user.authToken = webToken; 
     }, 
     removeWebToken: function(state){ 
      state.user.authToken = ''; 
     } 
    }, 
    methods:{ 
     getToken:function(){ 
      return store.state.user.authToken; 

     } 
    }, 
    plugins: [createPersistedState()] 

}) 

我已经包含了 “vuex-persistedstate.js”,但它显示在控制台的错误:Vuex插件错误

Uncaught TypeError: Cannot use 'in' operator to search for 'default' in undefined 
    at vuex-persistedstate.js:17 

Uncaught ReferenceError: createPersistedState is not defined 

当我按Ctrl +点击createPersistedState()调用我可以导航到该文件。

+0

你尝试,包括它没有'.js'扩展。不知道它会有什么区别,但我假设如果模块在node_modules内部,那么从'vuex-persistedstate''执行'import createPersistedState'应该包含它的'index.js'文件,而不是它会尝试加载的任何东西。这可能也会解释为什么'createPersistedState未定义' - 它可能找不到它,因为它正在寻找错误的东西。 – PeterTheLobster

+0

我不使用节点,npm。我正在使用普通的js。 –

+0

我不确定,但在我看来,插件是用npm构建的。如果你看看[源代码](https://github.com/robinvdvleuten/vuex-persistedstate/blob/master/dist/vuex-persistedstate.js),在我看来它似乎是建立在一个支持的框架内进口/需要。看第12-15行。 – PeterTheLobster

回答

0

vuex-persistedstate.js需要依赖于lodash和object-path。 vuex-persistedstate.js第17行上的这个 错误是缺少的lodash依赖项。 如果您已经添加了lodash,请确保它已加载到vuex-persistedstate模块中。

如果你真的想用普通的js。您必须定义window.merge = _.mergewindow.objectPath必须使用正确的节点模块进行定义。您宁可使用webpack正确使用此npm模块。

更多来源:https://github.com/robinvdvleuten/vuex-persistedstate/issues/23