1

我开始使用 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,属性名));^

TypeError: Reflect.getMetadata is not a function at 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) 在对象。(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 (internal/module.js:20:19) 当我删除创建新实例的行时,一切都很好了。我曾尝试使用不同的 PrimaryKey 装饰@PrimaryColumn("int", { generated: true })器,但这无济于事。

编辑:我的 tsconfig.json: { "version": "2.1", "compilerOptions": { "lib": [ "es5", "es6" ], "target": "es5", "module": "commonjs" ,“moduleResolution”:“节点”,“emitDecoratorMetadata”:真,“experimentalDecorators”:真,“sourceMap”:真,“typeRoots”:[“node_modules/@types”]},“排除”:[“node_modules”] }

提前非常感谢。

4

2 回答 2

9

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

"emitDecoratorMetadata": true,
"experimentalDecorators": true

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

import "reflect-metadata";
于 2016-12-18T07:41:07.267 回答
-2

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

于 2016-12-20T02:05:17.990 回答