在Modular Angular 2 Component Project中解析“使用类装饰器时需要反射元数据填充”

时间:2016-08-25 22:14:23

标签: angular reflect-metadata

我正在尝试创建一个包含Angular 2装饰器的打字稿包。这个软件包的目的是在npm安装之后导出一个NgModule导入到一个更大的项目中。

当我尝试通过jasmine运行测试时,我收到错误消息:

/Users/don286/Dev/Angular2Modules/viewengine/node_modules/@angular/core/src/util/decorators.js:173                                                                                       
    throw 'reflect-metadata shim is required when using class decorators';   

我的package.json中有这些包:

"devDependencies": {
"@angular/core": "^2.0.0-rc.5",
"@types/es6-shim": "0.0.30",
"@types/node": "^6.0.37",
"jasmine": "^2.4.1",
"reflect-metadata": "0.1.3",
"rxjs": "5.0.0-beta.6",
"zone.js": "^0.6.17"
}

我尝试将反射元数据导入到项目中,并且它不起作用......我能够成功运行所有测试。这里的问题是当我尝试导入模块并使用导出的组件时。我有这个问题:

views:169 Error: Error: XHR error (404 Not Found) loading http://localhost:5555/node_modules/crypto/package.json(…)

如果我尝试在不添加导入的情况下使用模块,则它不会识别任何Angular指令属性,并为html中的每个方面发出错误。此示例错误如下所示:

zone.js?1472162416591:461 Unhandled Promise rejection: Template parse errors: Can't bind to 'ngClass' since it isn't a known property of 'div'.

这是索引文件,用于查看如何处理导出:

import { NgModule } from '@angular/core';
import { Component } from './lib/component/Component.component';

export const DIRECTIVES: any[] = [
Component
];

@NgModule({
exports: DIRECTIVES,
declarations: DIRECTIVES
})
export class Module { }

我一直在寻找其他项目以及他们是如何做到这一点的,我找不到任何特别不同的东西...我不确定我缺少什么或者不明白让这些Angular Decorators构建来自根项目的外部。

1 个答案:

答案 0 :(得分:0)

您必须在SystemJS配置中包含reflect-metadatacrypto

 'reflect-metadata': '<path>/reflect-metadata/Reflect.js',
 'crypto': '<path>/crypto-js/crypto-js.js',

<path>基于您的应用程序配置,node_modules或您为应用程序提供服务的位置。

如果您使用的是Angular-CLI,请确保在reflect-metadata中包含cryptovendorNpmFiles具体的j。

希望这会有所帮助!!