Vue 3单元测试运行报错Cannot find module '@jest/globals'如何解决?
问题根因
你遇到的Cannot find module '@jest/globals'报错是Jest相关依赖版本不兼容导致的,具体匹配规则如下:
- 你当前使用的
@vue/cli-plugin-unit-jest@~4.5.0内置的Jest版本为24.x,@jest/globals是Jest 26版本才新增的官方包,24版本本身没有这个依赖 - 你安装的
vue-jest@^5.0.0-0是适配Jest 27+的版本,运行时会主动查找高版本Jest才有的@jest/globals包,因此触发报错
解决方案
提供两种可选方案,根据你的需求选择即可:
方案1:适配现有Vue CLI 4.x环境(改动最小,无需调整其他配置)
这个方案不需要修改其他测试相关配置,直接调整vue-jest版本即可:
- 卸载当前版本的vue-jest
npm uninstall vue-jest
- 安装适配Jest 24的Vue3版本vue-jest
npm install vue-jest@^17.0.0 --save-dev
说明:vue-jest v17是官方专门适配Vue3 + Jest 24/25的版本,和你当前cli内置的Jest版本完全兼容,不需要额外安装babel-jest,
@vue/cli-plugin-unit-jest已经内置了对应版本的babel-jest依赖。
方案2:升级全量Jest依赖到27+(可使用新版Jest特性)
如果想要使用更高版本Jest的特性,可以升级所有相关依赖:
- 执行安装命令更新所有依赖:
npm install --save-dev jest@^27.5.1 @types/jest@^27.4.1 babel-jest@^27.5.1 vue-jest@^5.0.0-alpha.10 @vue/cli-plugin-unit-jest@^5.0.8
- 检查你的
jest.config.js配置,确认transform字段中.vue文件对应的处理器为vue-jest即可。
疑问解答
- 是
@types/jest@24.0.19导致的报错吗?
不是,@types/jest只影响TypeScript的类型提示,不会导致运行时找不到依赖的报错,仅需要在升级Jest版本后同步升级对应版本即可。 - 是vue-jest版本的问题吗?
是的,版本不匹配是直接诱因,vue-jest大版本必须和Jest大版本一一对应。 - 需要安装babel-jest吗?
方案1不需要,Vue CLI的单元测试插件已经内置了对应版本的babel-jest;方案2需要手动安装,因为高版本Jest要求配套对应版本的babel-jest做代码转换。
内容的提问来源于stack exchange,提问作者user4094935
相关产品推荐
相关产品推荐

