Vue 2.7组合式API单元测试报错:defineProps未定义
Vue 2.7组合式API Jest测试报
defineProps is not defined的解决办法 我在Vue 2.7项目中使用组合式API,项目构建、代码检查和类型校验均正常,但运行Jest单元测试时组件挂载失败,抛出错误:
ReferenceError: defineProps is not defined
报错堆栈信息如下:
49 | } 50 | > 51 | const props = defineProps<Props>(); | ^ 52 | const { selectedAgreement, agreements, scopeId } = props; 53 | 54 | const t = translateMixin.methods.t; at Object.<anonymous> (components/oe-dirigent-top-row.vue:51:1) at Object.<anonymous> (b2b-oe-dirigent.vue:7:1) at Object.<anonymous> (b2b-oe-dirigent.spec.ts:1:1) at TestScheduler.scheduleTests (../../../common/temp/node_modules/.pnpm/@jest+core@27.5.1/node_modules/@jest/core/build/TestScheduler.js:333:13) at runJest (../../../common/temp/node_modules/.pnpm/@jest+core@27.5.1/node_modules/@jest/core/build/runJest.js:404:19) at _run10000 (../../../common/temp/node_modules/.pnpm/@jest+core@27.5.1/node_modules/@jest/core/build/cli/index.js:320:7) at runCLI (../../../common/temp/node_modules/.pnpm/@jest+core@27.5.1/node_modules/@jest/core/build/cli/index.js:173:3)
当前环境:大型Rush monorepo,Vue 2.7,测试依赖vue/test-utils@1.1.3、@vue/vue-jest@27.0.0-alpha.4
解决步骤
升级
@vue/vue-jest版本
当前使用的27.0.0-alpha.4为测试版本,对Vue 2.7新增的组合式API语法糖(如defineProps)支持不足。直接升级到^27.0.0正式版即可,该版本已适配Vue 2.7的编译时宏处理。确保Jest的transform配置正确
在jest.config.js中,确认.vue文件的转换器指向@vue/vue-jest,避免其他工具干扰编译:module.exports = { transform: { '^.+\\.vue$': '@vue/vue-jest', '^.+\\.ts$': 'ts-jest' // 若使用TypeScript,保留此配置 }, // 其他Jest配置... };临时方案:全局模拟
defineProps
如果暂时无法升级依赖,可在Jest初始化文件中添加全局模拟:- 创建
jest.setup.js文件:
global.defineProps = (props) => props;- 在
jest.config.js中指定该文件:
module.exports = { setupFilesAfterEnv: ['./jest.setup.js'], // 其他配置... };注意:此为临时规避方案,优先推荐升级依赖。
- 创建
确认Vue版本一致性
检查项目中安装的Vue版本是否为^2.7.0,避免因版本不一致导致兼容性问题。
内容的提问来源于stack exchange,提问作者Najarana
相关产品推荐
相关产品推荐

