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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:34:04