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

Vue2配置Jest测试报Plugin/Preset导出对象错误如何解决

问题原因

你项目日常构建使用的是 Babel 6 全家桶,但你安装的jest@27、babel-jest@27仅支持 Babel 7,二者版本不匹配导致报错:Babel 7 要求预设/插件必须导出函数,而 Babel 6 的babel-preset-stage-2导出的是对象,不符合要求。

解决方案

你可以选择两种方案解决,按需选择即可:

方案一:降级Jest到兼容Babel 6的版本(改动最小,无需调整现有构建逻辑)

  1. 先卸载现有高版本不兼容依赖
npm uninstall jest babel-jest
  1. 安装兼容 Babel 6 的Jest版本
npm install jest@23 babel-jest@23 --save-dev
  1. 修改.babelrc配置,新增test环境的模块转换规则(Jest运行在Node环境,需要CommonJS模块格式)
{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
      }
    }],
    "stage-2"
  ],
  "plugins": [
    "transform-vue-jsx", 
    "transform-runtime"
  ],
  "comments": false,
  "env": {
    "test": {
      "presets": [
        ["env", { "targets": { "node": "current" } }]
      ]
    }
  }
}
  1. 执行测试命令即可正常运行
npm run test:unit

方案二:升级项目Babel到7版本(适合长期维护,统一版本避免后续兼容问题)

  1. 卸载所有Babel 6相关依赖
npm uninstall babel-core babel-preset-env babel-preset-stage-2 babel-plugin-transform-runtime babel-plugin-transform-vue-jsx babel-runtime
  1. 安装Babel 7对应依赖
# 生产依赖
npm install @babel/runtime @vue/babel-preset-jsx --save
# 开发依赖
npm install @babel/core @babel/preset-env @babel/plugin-transform-runtime babel-jest --save-dev
  1. 修改.babelrc为Babel 7格式配置
{
  "presets": [
    ["@babel/preset-env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
      }
    }],
    "@vue/babel-preset-jsx"
  ],
  "plugins": [
    "@babel/plugin-transform-runtime"
  ],
  "comments": false,
  "env": {
    "test": {
      "presets": [
        ["@babel/preset-env", { "targets": { "node": "current" } }]
      ]
    }
  }
}
  1. 执行测试命令即可正常运行
npm run test:unit

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:09:01