我目前在我的.ts文件中使用此语法在我的组件中使用systemJs相对路径:
var height:NSLayoutConstraint = NSLayoutConstraint(item: alertController.view, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 200);
var width : NSLayoutConstraint = NSLayoutConstraint(item: alertController.view, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 300);
alertController.view.addConstraint(height);
alertController.view.addConstraint(width);
一切正常,直到我想在测试中导入此组件。我从业力中得到了以下非详细错误:
declare var __moduleName:string;
@Component({
moduleId: __moduleName,
...
})
...
如果我删除该行:
Chrome 52.0.2743 (Linux 0.0.0) ERROR
{
"originalErr": {}
}
来自组件transcrypted .js文件,我的所有测试都运行良好。
如果有人知道如何将这个systemjs relative-paths语法和karma / jasmine工具结合起来,那将是受欢迎的。
答案 0 :(得分:2)
目前,Angular2的最佳做法是使用commonjs
为moduleId
条目,并使用commonjs
编译您的应用。
tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
...
...
}
}
使用commonjs
编译可以正常使用karma / jasmine和angular2。
您只需要替换
@Component({
moduleId: __moduleName,
...
})
...
带
@Component({
moduleId: module.id,
...
})
...
并删除
declare var __moduleName:string;