在更新Vue和Vuex之后,“错误:[vuex]操作应该是具有“处理程序”功能的函数或对象,但“ actions.default”是{}”

MrM*_*Man 2 vuex vuejs2

我对项目进行了以下npm软件包更新:

vuex: 2.3.1 -> 3.0.0
vue: 2.4.2 -> 2.5.2
vue-router: 2.7.0 -> 3.0.1
Run Code Online (Sandbox Code Playgroud)

(还有更多,但我认为它们与该问题无关)

现在,在启动网页时出现此错误:

错误:[vuex]操作应为具有“处理程序”功能的函数或对象,但“ actions.default”为{}

我不确定为什么,我阅读了Vuex changelog,语法似乎并没有真正改变,但是由于某种原因我的代码崩溃了。

在仔细研究此问题后,我发现错误是由名为vuex.esm.js的文件中的断言失败引起的:

function assert (condition, msg) {
    if (!condition) { throw new Error(("[vuex] " + msg)) }
}
Run Code Online (Sandbox Code Playgroud)

更新软件包之前,代码工作正常,这里可能缺少我所需要的东西。我很高兴提供任何可能有助于更好地理解该问题的代码。

谢谢!

编辑:这是导致错误的调用堆栈: 调用堆栈

小智 5

我在单元测试中遇到了相同的错误。我只是在操作中添加了一个空handler函数,此后它就起作用了...

const state = { auth: { authenticated: false } };
const actions = { auth: { handler: () => {}, logout: () => sinon.stub() } };
let store;
beforeEach(() => {
   store = new Vuex.Store({
     state,
     actions,
   });
});
Run Code Online (Sandbox Code Playgroud)

  • >.< 但是为什么这可以解决问题......它只是帮助了我,但我不明白为什么。 (2认同)