Angular项目集成Jest时出现ENOENT文件不存在错误求助
解决Angular集成Jest时出现ENOENT找不到ng_module.ts的问题
这个错误我之前踩过一模一样的坑!本质是Jest默认会忽略node_modules里的文件转换,但jest-preset-angular需要对Angular官方包做转换处理,不然就会出现这种试图读取Angular源码路径(而不是编译后的包文件)的问题——Karma没这个问题是因为它的处理逻辑和Jest完全不同。
给你几个针对性的解决方案,按顺序试试:
调整
transformIgnorePatterns配置:
你当前的配置只包含了@ngrx等第三方库,没把Angular官方包加进去,导致Jest没转换这些文件。修改成下面这样:"transformIgnorePatterns": [ "<rootDir>/node_modules/(?!(@angular|@ngrx|ngx-dialog|ng-infinity))" ]加个
@angular进去,告诉Jest别忽略Angular包的转换。简化
ts-jest配置,去掉不必要的useBabelrc:
有时候useBabelrc: true会和jest-preset-angular的转换逻辑冲突,尤其是你没有额外的Babel配置需求时。修改globals部分:"globals": { "ts-jest": { "tsConfigFile": "src/tsconfig.spec.json" }, "__TRANSFORM_HTML__": true }检查依赖版本兼容性:
确保jest-preset-angular的版本和你的Angular版本匹配,比如Angular 12就得用jest-preset-angular@12.x,版本不匹配很容易出各种奇怪的路径问题。可以重新安装一遍相关依赖:npm uninstall jest-preset-angular jest ts-jest npm install --save-dev jest-preset-angular jest ts-jest(如果是Angular 14+,可能需要额外安装
@types/jest)清理Jest缓存:
缓存的旧转换结果也可能导致路径混乱,运行这条命令清一下:npx jest --clearCache
做完这些之后再跑测试,应该就能解决找不到ng_module.ts的问题了。
内容的提问来源于stack exchange,提问作者radio_head
相关产品推荐
相关产品推荐

