版本升级后无法找到@ngrx/effects/testing模块的问题求助
问题原因
该报错由jest模块解析规则和你配置的baseUrl: "./src"不匹配导致。
当tsconfig.json的baseUrl设为./src时,jest默认的模块解析逻辑会优先从src目录下查找依赖,而@ngrx/*这类第三方包存放在项目根目录的node_modules下,自然会触发找不到模块的报错。其他baseUrl设为.的项目不会出现该问题,是因为根目录下直接存在node_modules文件夹,jest可以直接命中依赖。
解决方案
按如下步骤调整jest配置即可解决:
- 先尝试在现有jest配置中新增
modulePaths和tsconfig指定字段,修改后的完整配置如下:
"jest": { "preset": "jest-preset-angular", "setupFilesAfterEnv": [ "<rootDir>/setupJest.ts" ], "moduleDirectories": [ "node_modules", "src" ], // 新增以下两项配置 "modulePaths": ["<rootDir>/node_modules"], "tsconfig": "<rootDir>/tsconfig.json" }
- 如果修改后仍有报错,再新增
moduleNameMapper规则,强制所有@ngrx开头的导入从根目录node_modules查找:
"jest": { // 保留原有所有配置 "moduleNameMapper": { "^@ngrx/(.*)$": "<rootDir>/node_modules/@ngrx/$1" } }
- 配置修改完成后,先清空jest缓存再执行测试,避免缓存影响:
npx jest --clearCache
额外检查项
如果你的项目存在单独的tsconfig.spec.json测试专用配置,请确认它的baseUrl和主tsconfig.json配置一致,或者已经正确继承了主配置的参数。
内容的提问来源于stack exchange,提问作者Anastasia Osintseva
相关产品推荐
相关产品推荐

