首页 文章

创建实体实例会导致Reflect.getMetadata不是一个函数

提问于
浏览
0

我开始使用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 at __decorate(C:\ Users \ Chris) \ Documents \ TypeORM - Kopie(2)\ entities \ Sprint.js:5:110)at Object . (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)位于Module的Function.Module._load(module.js:407:3) . require(module.js:466:17)at require(internal / module.js:20:19)当我删除创建新实例的行时,一切都很好 . 我曾尝试使用不同的PrimaryKey装饰器,如 @PrimaryColumn("int", { generated: true }) ,但这没有帮助 .

编辑:我的tsconfig.json:{“version”:“2.1”,“compilerOptions”:{“lib”:[“es5”,“es6”],“target”:“es5”,“module”:“commonjs” ,“moduleResolution”:“node”,“emitDecoratorMetadata”:true,“experimentalDecorators”:true,“sourceMap”:true,“typeRoots”:[“node_modules / @ types”]},“exclude”:[“node_modules”] }

非常感谢提前 .

2 回答

  • -1

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

    "emitDecoratorMetadata": true,
    "experimentalDecorators": true
    

    还要确保在使用orm的任何代码之前导入了反射元数据垫片:

    import "reflect-metadata";
    
  • 3

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

相关问题