未捕获的类型错误:Vue 不是构造函数 - Vuex 与 Vue 3

use*_*782 2 vuex vuejs3

我正在尝试将 Vuex 与 Vue 3 一起使用。这是我在 main.js 中的代码:

import { createApp } from 'vue';
import App from './App.vue';
import Vuex from 'vuex';

const app = createApp(App);
app.use(Vuex);

const store = new Vuex.Store({
    state: {
        counter: 0
    }
});

app.store(store);
app.mount('#app');
Run Code Online (Sandbox Code Playgroud)

尝试此操作时,我收到以下错误:

Uncaught TypeError: Vue is not a constructor
Run Code Online (Sandbox Code Playgroud)

我尝试过使用官方 Vuex 文档中推荐的语法,但这也不起作用。有谁知道如何解决这一问题?

Est*_*rai 5

发生此错误是因为您new Vuex.Store按照Vuex 3 的方式进行调用。

如果您使用的是Vue 3,则必须通过发出以下命令来安装Vuex 4

# npm
npm install --save vuex@next

# yarn
yarn add vuex@next
Run Code Online (Sandbox Code Playgroud)

然后构建您的商店并将其“注入”到 Vue 实例,如下所示:

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

const store = createStore({
  state () {
    return {
      count: 1
    }
  }
})

const app = createApp({ /* your root component */ });

app.use(store);
Run Code Online (Sandbox Code Playgroud)

更多细节请参考 Vuex 文档:

Vuex 4 用于 Vue 3