Vue3.2引入Vuex3.6.2报错Vue.mixin is not a function如何解决?
报错原因
- 核心问题是版本不兼容:Vuex 3.x 仅支持Vue 2版本,你当前使用的是Vue 3.2.x,两者API设计逻辑不匹配。
- 具体报错逻辑:Vue 2的全局API直接挂载在全局
Vue构造函数上,包括Vue.mixin;Vue 3废弃了全局构造函数的API设计,改为应用实例调用的形式,即你代码中用到的app.mixin,全局Vue对象上不存在mixin方法。Vuex 3初始化时会主动调用Vue.mixin注入全局逻辑,因此抛出类型错误。
解决方案
方案1:适配Vue 3环境(推荐)
将Vuex版本替换为Vuex 4.x,该版本是官方专为Vue 3开发的适配版本,使用步骤如下:
- 替换引入的Vuex资源:
<script src="lib/vue3.2.2.global.js"></script> <script src="lib/vuex4.x.global.js"></script>
- 代码中先给应用实例注册Vuex,再初始化Store:
// 先创建应用实例 const app = Vue.createApp({/* 根组件配置 */}) // 注册Vuex到当前应用实例 app.use(Vuex) // 初始化Store const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment (state) { state.count++ } } }) // 挂载前将store注入到应用实例 app.use(store) x = app.mount("#app")
方案2:保留Vuex 3环境
将Vue版本降级到2.x系列,匹配Vuex 3的API要求即可正常运行。
内容的提问来源于stack exchange,提问作者George Sayan Andriyanov
相关产品推荐
相关产品推荐

