Karma 找不到 angular2 "barrel" 导入

Karma cannot find angular2 "barrel" import

我们有一个使用桶导入模式的 Angular2 项目。我正在尝试为其编写单元测试,但是 Karma 似乎无法找到 barrel 语句引用的模块。

正在测试的文件导入使用:

import {provider1, provider2, provider3} from "../../../core/providers";
import {component1} from "../../controls";

并且 karma 输出以下警告:

13 05 2016 08:57:43.732:WARN [web-server]: 404: /base/src/app/core/providers
13 05 2016 08:57:43.732:WARN [web-server]: 404: /base/src/app/core/controls

现在加载我们的客户端脚本的 karma 配置文件部分:

// paths loaded via module imports
{ pattern: "src/app/**/*.js", included: false, watched: true },
// paths to support debugging with source maps in dev tools
{ pattern: "src/app/**/*.ts", included: false, watched: false },

应该加载所有客户端脚本,但我认为由于我正在单元测试的文件使用桶导入,Karma 不知道如何处理它。我也不...

我曾尝试为此桶形图案添加代理,但没有成功。

我应该做什么?

是结束于

的行

...观看:

被截断了?缺少 true/false},

事实证明,将 SystemJS 与 Angular2 一起使用,您需要向 SystemJS 配置文件提供有关 "barrel" 含义的信息,否则 TypeScript 在编译您的项目时将不知道要查找什么。意思是,当你说:

import {component1} from "../../controls";

默认情况下,TypeScript 会查找“../../controls.js”,除非您告诉它不要查找。在我的主配置文件中,我为这些指定了一些映射,以便 SystemJS 知道在这些存储桶中查找什么:

packages: {
  "src/path/path/controls": {
    "main": "index"
  },
  "src/path/path/providers": {
    "main": "index"
  }
},

但是,我还需要将其添加到 karma-test-shim.js 文件中,以便 Karma 知道要查找什么。

将它添加到我的 karma-test-shim.js 文件后,它工作正常。

var packages = {
    "base/src/path/path/controls": {
        "main": "index"
    },
    "base/src/path/path/providers": {
        "main": "index"
    }
};
System.config(packages);