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

Jest单元测试调用shallowMount报Vue is not defined错误排查

问题结论

你的单元测试代码、被测About组件代码均无编写错误,ReferenceError: Vue is not defined报错是Jest相关依赖版本冲突、配置不匹配导致的,不需要修改业务/测试代码,调整依赖和Jest配置即可修复。

根因说明

你的devDependencies中同时存在两个功能重叠、版本适配规则冲突的Vue单文件组件(SFC)转换依赖:

  • vue3-jest@27.0.0-alpha.1:早期alpha测试版本,仅适配Jest 27版本,内部逻辑依赖全局Vue变量的挂载,和Vue 3 + Jest 28的运行环境不兼容
  • @vue/vue3-jest@28.0.0:官方正式维护的适配Jest 28的Vue3 SFC转换包,和你当前安装的Jest 28.1.1版本匹配

Jest运行时优先加载了旧的alpha版转换器,处理.vue文件导入时尝试访问不存在的全局Vue变量,直接抛出报错。

修复步骤
  1. 卸载冲突的旧版alpha依赖:
    npm uninstall vue3-jest
    # 若使用yarn包管理器,执行 yarn remove vue3-jest
    
  2. 检查项目根目录的jest.config.js配置文件,确保transform规则匹配当前依赖版本,参考配置如下:
    module.exports = {
      preset: '@vue/cli-plugin-unit-jest',
      testEnvironment: 'jsdom',
      transform: {
        '^.+\\.vue$': '@vue/vue3-jest',
        '^.+\\.[jt]sx?$': 'babel-jest'
      },
      // 其余原有配置保持不变即可
    }
    
  3. 清理Jest缓存后重新执行单元测试:
    npx jest --clearCache
    npm run test:unit
    
补充说明

你当前安装的@vue/test-utils@2.x、vue@3.x、jest@28.x、@vue/vue3-jest@28.x版本是互相兼容的,不需要额外做版本升降级操作。

内容的提问来源于stack exchange,提问作者dna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:30:45