You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue2迁移至Vue3时出现Cannot read properties of undefined (reading 'use')错误求助

Vue2迁移Vue3后出现"Cannot read properties of undefined (reading 'use')"错误的解决方案

错误原因分析

这个错误核心是代码中尝试调用Vue.use()时,Vue变量为undefined。Vue3与Vue2的核心API使用方式差异较大,同时依赖兼容性、构建配置错误也可能引发该问题。

具体解决步骤

1. 修正Vue实例化与插件注册代码

Vue3不再暴露全局Vue构造函数,默认导出的是包含createApp等方法的对象,直接调用Vue.use()会报错。根据是否使用兼容模式调整代码:

情况1:使用@vue/compat兼容模式(保留Vue2写法)

确保导入的是@vue/compat而非vue:

// resources/assets/js/app.js
import Vue from '@vue/compat'
import VueRouter from 'vue-router'
import Vuex from 'vuex'
import ElementPlus from 'element-plus'

Vue.use(VueRouter)
Vue.use(Vuex)
Vue.use(ElementPlus)

new Vue({
  el: '#app',
  router,
  store
})

情况2:完全使用Vue3写法(推荐)

改用createApp创建应用实例,通过实例调用use:

// resources/assets/js/app.js
import { createApp } from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router'
import Vuex from 'vuex'
import ElementPlus from 'element-plus'

const app = createApp(App)
app.use(VueRouter)
app.use(Vuex)
app.use(ElementPlus)

app.mount('#app')

2. 移除webpack.mix.js中多余的override配置

你手动修改vue-loader规则的代码存在逻辑问题:rule.test == '/\.vue$/'用字符串匹配正则表达式永远不成立,且laravel-mix的.vue({ version: 3 })已经自动配置了正确的vue-loader,手动修改可能导致构建异常。删除这段代码:

// 删掉以下内容
.override((webpackConfig) => {
    webpackConfig.module.rules = webpackConfig.module.rules.map(function (rule) {
      if (rule.test == '/\.vue$/') {
        rule.use[0].loader = 'vue-loader';
      }
      return rule;
    });
  })

3. 替换不兼容的依赖包

你安装的element-ui-el-table-draggable是为Vue2的Element UI设计的,与Vue3的Element Plus不兼容,会引发异常。替换为Element Plus兼容的表格拖拽方案,比如使用sortablejs实现:

# 卸载旧包
npm uninstall element-ui-el-table-draggable
# 安装sortablejs
npm install sortablejs

在组件中使用SortableJS实现表格拖拽:

import Sortable from 'sortablejs'

export default {
  mounted() {
    const tableEl = this.$refs.table.$el.querySelector('.el-table__body-wrapper tbody')
    Sortable.create(tableEl, {
      onEnd: (evt) => {
        // 处理拖拽后的逻辑
      }
    })
  }
}

4. 清理缓存重新构建

清除旧依赖和构建缓存,确保所有依赖正确安装:

rm -rf node_modules package-lock.json
npm install
npm run dev

内容的提问来源于stack exchange,提问作者World's famous people

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:55:22