DEBUG.WIKI
腾讯云;让你的想法跑起来;轻量服务器 · 建站 / Docker / API;查看产品 →
Evoxt;最高 6.0GHz CPU;高频云服务器 · 免费每周备份;查看配置 →
野草云;香港 200Mbps 峰值;不限月流量 · BGP VPS;查看套餐 →

Jest 指定 --config 仍报 Could not find a config file

jest-config30.5.1/30.5.2判断全局配置时,会额外从cwd发现配置。当前目录与祖先没有配置时,显式配置文件也可能没能阻止这次错误。

Jest 已经通过 --config 指定一个存在的配置文件,仍报 Could not find a config file based on provided values,而消息里的 path、cwd 指向启动命令的另一个目录。使用 jest-config 30.5.1 或 30.5.2 时,应检查启动目录本身有没有可发现的配置或 package.json。

这条回归的条件是:显式配置在别处,当前工作目录及祖先没有可发现的 Jest 配置或 package.json。把 --config 改成绝对路径仍可能失败;错误不是简单说那个显式文件不存在。

显式配置读到了,额外发现仍然失败

30.5.2 的 readConfigs() 在判断谁提供全局配置时,还会尝试解析项目根的配置路径。对这个组合,它可能先从 cwd 向上发现配置,再决定显式配置的角色;额外解析抛错,测试尚未开始。

先对照报错中的目录与实际 --config 路径,并核对真正执行的 jest-config 版本。monorepo、任务调度器和编辑器测试入口常有不同 cwd;只在项目目录里重跑成功,尚未解释 CI 为什么失败。

如果命令给的是配置目录,而不是文件,还涉及 Jest 约定的文件名发现;配置文件不存在、扩展名或模块格式不受支持也需分别处理,不能都套用这里的回归。

让所拥有的测试任务从既有项目目录启动

暂时保留受影响版本时,可将该次测试子进程的 cwd 设为已经有 package.json 或正常 Jest 配置的项目目录,同时继续显式指定原配置文件。例如:

cd /absolute/path/to/existing-project
./node_modules/.bin/jest --ci --runInBand \
  --config /absolute/path/to/existing-project/sub/custom.config.mjs

两处路径都要换成真实已有位置;这条命令会执行测试。项目使用工作区脚本或另一套包管理器时,沿用原来的已安装 Jest 入口,不必为了示例另装一份工具。

原配置的 rootDir、testMatch 和相对 setup 文件也要核对,不能通过改 cwd 顺手把测试范围变成另一个项目。对于并行任务调度器,应给自己创建的测试子进程设置 cwd,不要对共享进程全局 chdir()。

不建议在不相关的系统目录或其祖先随手放一个空 package.json。它虽然可能让发现停止,却会改变该目录的项目边界,掩盖真实启动配置。也不要把原配置复制到多个 cwd,让它们逐渐成为不同版本。

升级以实际发行代码为准

截至 2026 年 10 月 24 日,正式 jest、jest-config 仍为 30.5.2,对应实现仍包含这次额外发现。后续修正应明确支持“cwd 没有可发现配置,但传入了配置文件”的调用,不能把待合并的修改当成当前安装包已修。

在原来失败的外部启动环境和正常项目入口分别验收,确认两者实际选中的配置身份、rootDir 和测试文件列表符合预期,测试也真正运行。只看进程不再打印找不到配置,可能只是新 cwd 下另一份配置被自动选中了;还应检查项目原来的全局选项没有被当成逐项目选项而失效。