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

Jest收集未测试JSON文件覆盖率报错,除忽略文件外有无更好解决方案?

问题原因说明

这不是Jest的Bug,问题出在你自定义的JSON转换逻辑不符合要求。
你当前的jsonTransform直接返回JSON原始内容,而裸的JSON字符串不是合法的可执行JS代码。Jest的覆盖率收集工具处理文件前会先过transform,但转换后的输出必须是合法的JS语法才能被解析,你返回的裸JSON会被当成JS执行,自然会抛出缺少分号的语法错误。

解决方案

场景1:不需要收集JSON文件的覆盖率

最优方案是直接在collectCoverageFrom规则中限定只收集业务代码文件,从源头过滤掉不需要统计覆盖率的文件类型,示例配置:

collectCoverageFrom: ['<rootDir>/**/*.{js,jsx,ts,tsx}'], // 按需添加你需要统计的后缀

这种方案比把JSON加到coveragePathIgnorePatterns性能更好,也更易维护,不用后续新增JSON后缀相关的忽略规则。

场景2:确实需要统计JSON文件的覆盖率

只需要修改你的jsonTransform.js的转换逻辑,把JSON内容包裹成合法的JS模块导出即可,示例修改:

module.exports = {
  process(src) {
    // CommonJS规范输出,ESM项目可以改成 `export default ${src};`
    return `module.exports = ${src};`;
  },
};

修改后转换输出的是合法JS代码,覆盖率工具就能正常解析不会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 19:15:03