【发布时间】:2017-05-03 08:42:32
【问题描述】:
我开始使用 typeorm。我创建了一些实体:
@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\decorator\columns\PrimaryColumn.js:20 var reflectType = ColumnTypes_1.ColumnTypes.typeToString(Reflect.getMetadata("design:type", object, propertyName)); ^
TypeError: Reflect.getMetadata 不是函数
在 C:\Users\Chris\Documents\TypeORM - Kopie (2)\node_modules\typeorm\decorator\columns\PrimaryColumn.js:20:76
在 __decorate (C:\Users\Chris\Documents\TypeORM - Kopie (2)\entities\Sprint.js:5:110)
在对象。 (C:\Users\Chris\Documents\TypeORM - Kopie (2)\entities\Sprint.js:19:1)
在 Module._compile (module.js:541:32)
在 Object.Module._extensions..js (module.js:550:10)
在 Module.load (module.js:456:32)
在 tryModuleLoad (module.js:415:12)
在 Function.Module._load (module.js:407:3)
在 Module.require (module.js:466:17)
在需要(内部/module.js:20:19)
当我删除创建新实例的行时,一切都很好了。我曾尝试使用不同的 PrimaryKey 装饰器,例如 @PrimaryColumn("int", { generated: true }),但这无济于事。
编辑:我的 tsconfig.json: { “版本”:“2.1”, “编译器选项”:{ “lib”:[“es5”,“es6”], “目标”:“es5”, “模块”:“commonjs”, "moduleResolution": "节点", “emitDecoratorMetadata”:真, “experimentalDecorators”:是的, “源地图”:是的, “typeRoots”:[“node_modules/@types”] }, “排除”: [ “节点模块” ]}
提前非常感谢。
【问题讨论】:
标签: typescript typeorm