创建一个实体原因反映的实例.getMetadata不是一个函数



我开始使用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会立即使用以下stacktrace崩溃:

c: users chris documents typeorm -kopie(2) node_modules typeorm typeorm decorator decorator columns priendarcolumn.js:20 var reflectedType = columnTypes_1.columntypes.typetostring(Reflect.GetMetAdata(" design:type",object,object,propertyName)); ^

TypeError:Reffle.GetMetadata不是功能 在C: Users Chris Documents typeorm -Kopie(2) node_modules typeorm typeorm decorator columnator priendarcolumn.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) AT require(内部/模块:20:19)当我删除创建新实例的行时,一切都很好。我试图使用@PrimaryColumn("int", { generated: true })等不同的主键装饰器,但这无济于事。

编辑:我的tsconfig.json: { "版本":" 2.1", " compileroptions":{ " lib":[" ES5"," ES6"],, "目标":" ES5", "模块":" commonjs", " Moduleresolution":" Node", " emitdecoratormetadata":是的, "实验指标":是的, " sourcemap":是的, " typeroots":[" node_modules/@types"] },, "排除": [ " node_modules" ]}

预先感谢。

确保您使用的是Typescript编译器版本> 2.1,并且已启用了tsconfig.json中的设置:

"emitDecoratorMetadata": true,
"experimentalDecorators": true

还请确保您在使用ORM的任何代码之前都导入反射式metadata shim:

import "reflect-metadata";

示例github.com/typeorm/typescript-example对我来说很好。现在,我将整个代码复制到了示例项目中,我的问题已经消失。

相关内容

最新更新