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

Angular 20升级后单元测试中文件请求出现404错误的问题求助

Angular 20升级后单元测试中文件请求出现404错误的问题求助

遇到这种升级后突然出现的404问题,大概率是Angular 20配套的Karma版本对文件配置的处理逻辑变严格了,结合你的描述,我整理了几个最可能的修复方向:

1. 修正Karma文件配置中的included属性

你当前的karma.config.js里把included设为了true,但这个属性是用来控制是否把文件作为脚本注入到测试页面中的。对于静态测试文件来说,我们只需要Karma能提供这些文件(served: true),不需要把它们当作脚本引入,所以应该把included改成false:

files: [
  {
    pattern: "test/sample-files/**/*.*",
    watched: false,
    served: true,
    included: false, // 重点修改这里
  },
],

Angular 19对应的Karma版本可能对这个配置的容错性较高,但升级到Angular 20后,Karma的处理逻辑更严格,included: true会导致文件被当作JS脚本解析,反而无法通过fetch正常访问。

2. 验证Karma的basePath配置是否正确

检查你的karma.config.js里的basePath值是否指向项目根目录。如果升级过程中CLI默认调整了basePath(比如改成了src),那你配置的test/sample-files路径就会解析错误。确保basePath是项目根目录,或者根据实际路径调整文件匹配的pattern。

3. 清理测试缓存后重新运行

Angular升级后可能残留了旧的构建缓存,导致Karma没有正确加载新的文件配置。试试执行以下命令强制清理缓存:

npm run test -- --no-cache

或者手动删除node_modules/.cache目录后再重新运行测试。

4. 检查Angular CLI配置是否覆盖了Karma设置

Angular 20可能更新了CLI对Karma的默认配置规则,你的自定义karma.config.js可能被CLI的配置覆盖了。可以尝试把文件配置移到angular.json的test选项中:

"test": {
  "options": {
    "files": [
      {
        "pattern": "test/sample-files/**/*.*",
        "watched": false,
        "served": true,
        "included": false
      }
    ]
  }
}

这样可以确保CLI在启动测试时正确加载你的静态文件配置。

另外,你也可以在测试运行时打开Karma的调试页面(通常是http://localhost:9876/debug.html),在开发者工具的网络面板里查看请求的完整路径,确认文件的实际服务路径是否和你代码里的base/test/sample-files/...一致,这能帮你快速定位路径是否匹配。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 13:37:59