2016-12-17 7 views
0

私はtypeormを使い始めました。私はいくつかのエンティティを作成しました:エンティティのインスタンスを作成する原因Reflect.getMetadataは関数ではありません

@Table() 
export class User { 
@PrimaryColumn() 
name: string; 
@Column() 
passwordHash: string; 
@OneToMany(type => Sprint, sprint => sprint.scrumMaster) 
sprints: Sprint[]; 
@OneToMany(type => BacklogItem, item => item.assignedTo) 
assignments: BacklogItem[]; 
@OneToMany(type => BacklogItem, item => item.createdBy) 
createdItems: BacklogItem[]; 
} 
@Table() 
export class Sprint { 
@PrimaryGeneratedColumn() 
id: number; 
@Column("date") 
start: Date; 
@Column("date") 
end: Date; 
@ManyToOne(type => User, user => user.sprints) 
scrumMaster: User; 
@OneToMany(type => BacklogItem, item => item.sprint) 
items: BacklogItem[]; 
@Column() 
isFinished: boolean; 
} 

Typeormはデータベース(Sqlite)を作成します。しかし、let = user = new User()のようなエンティティのインスタンスを作成するときは、次のスタックトレースでNodeJSが即座にクラッシュします。

C:\ Users \ Chris \ Documents \ TypeORM - Kopie(2)\ node_modules \ typeorm \デコレータ\列\ PrimaryColumn.js:20 var reflectType = ColumnTypes_1.ColumnTypes.typeToString(Reflect.getMetadata( "design:type"、object、propertyName)); ^

例外TypeError:Reflect.getMetadataはCで機能 ではありません:\ユーザーはクリス\ドキュメント\ \ TypeORM - Kopie PrimaryColumn.js \(2)\ node_modules \ typeorm \デコレータ\コラム:76 で:20 __Decorate(C:¥Users¥Chris¥Documents¥TypeORM-Kopie(2)¥entities¥Sprint.js:5:110) atオブジェクト。 (Module.js:541:32) (Object.Module._extensions)の で、C:¥Users¥Chris¥Documents¥TypeORM-Kopie(2)¥entities¥Sprint.js:19:1) Module.load(module.js:550:10) (Module.js:456:32) のtryModuleLoad(module.js:415:12) at Function.Module._load(module.js:407: 3) at Module.require(module.js:466:17) at require(internal/module.js:20:19) 新しいインスタンスを作成する行を削除すると、すべて正常です。私は@PrimaryColumn("int", { generated: true })のような別のPrimaryKey decoratersを使用しようとしましたが、これは役に立ちません。

EDIT:私tsconfig.json: { "バージョン": "2.1"、 "compilerOptions":{ "LIB": "ES5"、 "ES6"]、 "標的":「ES5 " "モジュール": "commonjs"、 "moduleResolution": "ノード"、 "emitDecoratorMetadata":真、 "experimentalDecorators":真、 "sourceMap":真、 "typeRoots":[" node_modules/@types "] }、 " exclude ":[ " node_modules " ]

ありがとうございます。

答えて

1

2.1>あなたは活字体コンパイラのバージョンを使用していることを確認し、あなたがtsconfig.jsonで以下の設定を有効にしている:

"emitDecoratorMetadata": true, 
"experimentalDecorators": true 

はまた、あなたはORMを使用してコードのいずれかの前に反映-メタデータをシムを輸入していることを確認してください

import "reflect-metadata"; 
+0

私はすべてがあると思います。 'tsc -version'は私に2.1.4を与えます。私は 'tsc -p .'を使って自分のコードをコンパイルします。元の投稿に自分のtsconfigを追加しました。 –

+0

で問題を解決する必要があります。このサンプルをチェックアウトしてみてください:https://github.com/typeorm/typescript-exampleそれを実行し、それが動作するかどうか確認してください – pleerock

+0

サンプルは実際に動作します。私は今あなたのサンプルに私のソースコード全体をコピーし、今それは動作します。ありがとう –

-1

サンプルgithub.com/typeorm/typescript-exampleが問題なく機能します。私は今、私のコード全体をサンプルプロジェクトにコピーしましたが、私の問題はなくなりました。

+0

サンプルが正常に動作しましたが、同じ問題を解決しようとしている他の人に何の問題が起きているのかについての洞察や手掛かりはありません。だからこの発言は完全な答えではなくあなたの質問に対する編集/発言である可能性があります。 –

関連する問題