Karma 无法使用 Angular 2 快速启动配置代理 html

Karma fails to proxy html with the Angular 2 quickstart config

我玩过 Angular 2 QuickStart 和测试。我们确实需要将 html 和 css 分开以适应我们的设计人员,因此使用 templateUrl 等至关重要。但是,一旦我用 templateUrl 替换模板并指向 html 文件,测试就开始失败。

Karma 报告 "WARN [proxy]: failed to proxy base/app/test.html (socket hang up)",并查看网络跟踪,它没有翻译 URL。所有 JS 都被翻译成 /base/app,但无论我如何处理文件模式和代理,它都会继续 /app/test.html 而不是 /base/app/test.html.在组件中,templateUrl 设置为 "app/test.html"。我也在那里尝试了所有可能的变化。

使测试通过的唯一方法是在 karma.conf.js 中为 html 设置 include:true,并指向 templateUrl 中的 /base/app/test.html . 我的印象是使用 karma 代理会使 "something" 在翻译所有请求的 url 之间?

我使用了来自快速启动存储库的发布和最新提交的文件。

编辑: 这已在 angular/quickstart 项目中修复。 :)
https://github.com/angular/quickstart/issues/329#issuecomment-271800205

我刚才在测试快速入门时遇到了同样的问题。我可以通过将 karma.conf.js 中的 appAssets 从原来的 base/app/ 更改为 /base/app/

来修复它

根据我对问题的了解,如果您尝试代理 /app/,这就是快速入门 karma.conf

中使用的内容
var appAssets  = 'base/app/'

proxies: {
  "/app/": appAssets
},

为什么要将其替换为 前面也没有 / 的路径。当您考虑 URL 的解析方式时,这会导致 /app/ 变为 base/app/,但两者并不相同。