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

版本升级后无法找到@ngrx/effects/testing模块的问题求助

问题原因

该报错由jest模块解析规则和你配置的baseUrl: "./src"不匹配导致。
当tsconfig.json的baseUrl设为./src时,jest默认的模块解析逻辑会优先从src目录下查找依赖,而@ngrx/*这类第三方包存放在项目根目录的node_modules下,自然会触发找不到模块的报错。其他baseUrl设为.的项目不会出现该问题,是因为根目录下直接存在node_modules文件夹,jest可以直接命中依赖。

解决方案

按如下步骤调整jest配置即可解决:

  1. 先尝试在现有jest配置中新增modulePaths和tsconfig指定字段,修改后的完整配置如下:
"jest": {
    "preset": "jest-preset-angular",
    "setupFilesAfterEnv": [
      "<rootDir>/setupJest.ts"
    ],
    "moduleDirectories": [
      "node_modules",
      "src"
    ],
    // 新增以下两项配置
    "modulePaths": ["<rootDir>/node_modules"],
    "tsconfig": "<rootDir>/tsconfig.json"
}
  1. 如果修改后仍有报错,再新增moduleNameMapper规则,强制所有@ngrx开头的导入从根目录node_modules查找:
"jest": {
    // 保留原有所有配置
    "moduleNameMapper": {
      "^@ngrx/(.*)$": "<rootDir>/node_modules/@ngrx/$1"
    }
}
  1. 配置修改完成后,先清空jest缓存再执行测试,避免缓存影响:
npx jest --clearCache
额外检查项

如果你的项目存在单独的tsconfig.spec.json测试专用配置,请确认它的baseUrl和主tsconfig.json配置一致,或者已经正确继承了主配置的参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:24:09