如何结合 SystemJs 相对路径并使用 karma/jasmine 进行测试

How to combine SystemJs relative path and test using karma/jasmine

我目前在我的组件中使用 systemJs 相对路径,在我的 .ts 文件中使用此语法:

declare var __moduleName:string;

@Component({
  moduleId: __moduleName,
  ...
})
...

一切正常,直到我想在测试中导入该组件。我从 karma 得到了以下非详细错误:

Chrome 52.0.2743 (Linux 0.0.0) ERROR
{
  "originalErr": {}
}

如果我删除该行:

moduleId: __moduleName,

从组件转译的 .js 文件来看,我的所有测试都运行良好。

如果有人知道如何结合此 systemjs 相对路径语法和 karma / jasmine 工具,我们将不胜感激。

目前,Angular2 的最佳实践是使用 commonjs 作为您的 moduleId 条目并使用 commonjs.

编译您的应用程序

tsconfig.json:

{
  "compilerOptions": {
    "module": "commonjs",
    ...
    ...
  }
}

使用 commonjs 编译将在 karma/jasmine 和 angular2 中正常工作。

您只需更换

@Component({
  moduleId: __moduleName,
  ...
})
...

@Component({
  moduleId: module.id,
  ...
})
...

并删除

declare var __moduleName:string;