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

如何生成完整Jest coverage文件夹?解决EPERM权限错误

问题描述

运行npm run test:coverage时,覆盖率统计流程显示成功,但仅生成包含coverage-final.json的文件夹,未得到包含完整报告内容的coverage目录,同时抛出权限错误:

Failed to write coverage reports:
ERROR: Error: EPERM: operation not permitted, open 'D:\Programing\Wep\Development\Node Js\coverage\lcov.info'

我的package.json中scripts配置:

"scripts": {
    "test": "jest --config jestconfig.json",
    "test:coverage": "npm run test -- --coverage"
  }

jestconfig.json配置:

{
  "transform": {
    "^.+\\.(t|j)s?$": "ts-jest"
  },
  "testRegex": "(/__tests__/.*|(\\.|/) (test|spec))\\.(js?|ts?)$",
  "moduleFileExtensions": ["ts", "js"]
}

期望:生成包含完整HTML、lcov等报告内容的coverage文件夹。


解决方案

1. 检查并修复文件夹权限

  • 如果coverage文件夹已存在,右键该文件夹 → 「属性」→「安全」,确认当前登录用户拥有读取、写入、修改权限;若权限不足,点击「编辑」添加对应权限。
  • 若文件夹不存在,检查上级目录D:\Programing\Wep\Development\Node Js的权限,确保jest有创建新文件夹并写入文件的权限。

2. 以管理员身份运行终端

关闭当前终端窗口,右键选择终端(CMD/PowerShell/VS Code内置终端)→「以管理员身份运行」,再重新执行npm run test:coverage。Windows下部分系统路径需要管理员权限才能完成文件写入操作。

3. 明确配置coverage参数并清理旧文件

修改jestconfig.json,指定报告格式和输出目录,同时开启清理旧文件的选项:

{
  "transform": {
    "^.+\\.(t|j)s?$": "ts-jest"
  },
  "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(js?|ts?)$",
  "moduleFileExtensions": ["ts", "js"],
  "coverageDirectory": "./coverage",
  "coverageReporters": ["json", "lcov", "text", "clover", "html"],
  "clearMocks": true,
  "collectCoverage": true
}

之后手动删除已存在的coverage文件夹,再重新执行覆盖率命令。

4. 修复jest版本冲突

执行npm list jest查看项目中jest的版本情况,如果存在多版本冲突(比如全局jest和项目本地jest版本不一致),执行npm install jest@latest ts-jest@latest --save-dev更新到最新兼容版本,避免版本差异导致的文件写入异常。

5. 关闭占用文件的程序

检查是否有编辑器、杀毒软件、文件管理器等程序正在打开coverage目录下的文件,关闭这些程序后重新运行命令,避免文件被锁定导致无法写入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:25:18