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

Node.js+MongoDB项目Jest测试执行后报错:文件不存在问题排查

问题排查与解决方案

1. 修复Jest配置中的语法错误

你的jest.config.js里使用了中文引号(‘’、“”),这会导致配置解析异常,是Jenkins环境下触发问题的关键之一:

// 修正后的配置
const config: Config.InitialOptions = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  verbose: true,
  coveragePathIgnorePatterns: ["/node_modules/"], // 改用正则写法,避免字符串转义错误
  coverageProvider: "v8",
  testMatch: ['/tests/**/*.ts?(x)', '**/?(*.)+(spec|test).ts?(x)'],
  setupFilesAfterEnv: ['./jest.setup.ts'],
  collectCoverage: true,
  coverageDirectory: "./coverage", // 改为相对路径,避免Jenkins用户无权限操作根目录
}
export default config;

重点修正点:

  • 所有引号替换为英文单/双引号
  • coveragePathIgnorePatterns使用正则格式"/node_modules/",避免转义失误
  • coverageDirectory从绝对路径"/coverage"改为相对路径"./coverage",解决权限限制问题

2. 切换覆盖率收集器

v8覆盖率收集器对依赖包的sourcemap解析更严格,当mongodb-connection-string-url这类依赖的sourcemap指向不存在的源码文件时,会触发ENOENT错误。可以切换为babel收集器:

coverageProvider: "babel",

切换后需安装对应依赖:

npm install --save-dev @babel/core babel-jest

3. 清理Jenkins依赖缓存

Jenkins的依赖缓存可能存在损坏或不完整的情况,在构建步骤中添加:

rm -rf node_modules package-lock.json
npm install

避免使用npm ci(该命令会严格按lockfile安装,可能跳过依赖的源码文件生成逻辑)

4. 强制忽略特定依赖的覆盖率收集

如果上述方法无效,可明确将mongodb-connection-string-url加入忽略列表:

coveragePathIgnorePatterns: [
  "/node_modules/",
  "/node_modules/mongodb-connection-string-url/"
],

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:27:11