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

非CRA搭建的React项目配合Cypress无法生成代码覆盖率报告求助

修复步骤

前置依赖检查

确保已安装所有必要的开发依赖:

npm i -D babel-plugin-istanbul @cypress/code-coverage nyc

1. 修复.babelrc配置错误

你当前的.babelrc存在核心配置错误:@babel/preset-react被错误嵌套在@babel/preset-env的配置数组内,导致React语法解析和插桩逻辑异常。同时根级配置了istanbul插件会导致生产构建也被注入插桩代码,需调整如下:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        }
      }
    ],
    "@babel/preset-react"
  ],
  "plugins": [
    [
      "module-resolver",
      {
        "root": ["./src"]
      }
    ],
    "@babel/plugin-syntax-dynamic-import",
    "transform-class-properties"
  ],
  "env": {
    "test": {
      "plugins": ["istanbul"]
    },
    "e2e": {
      "plugins": ["istanbul"]
    }
  }
}

2. 补充NYC覆盖率配置

在项目package.json中新增nyc配置,明确覆盖率统计的范围和输出格式:

{
  "nyc": {
    "include": ["src/**/*.{js,jsx}"],
    "exclude": [
      "src/**/*.test.{js,jsx}",
      "cypress/**/*"
    ],
    "reporter": ["text", "text-summary", "html"],
    "all": true
  }
}

3. 调整测试执行脚本

@cypress/code-coverage插件会自动完成覆盖率收集和报告生成,无需手动调用nyc report,同时需要指定运行时的babel环境为e2e,修改脚本如下:

"cy": "BABEL_ENV=e2e cypress run"

如果是Windows环境,需先安装cross-env后调整为:

"cy": "cross-env BABEL_ENV=e2e cypress run"

4. 验证结果

执行测试后可在项目根目录的.nyc_output文件夹看到收集到的覆盖率原始数据,coverage文件夹下会生成对应格式的报告,可直接打开coverage/index.html查看明细覆盖率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:15:10