NestJS Typeorm-无法创建实体

时间:2019-07-02 17:30:54

标签: mysql typescript docker nestjs typeorm

我试图将一个Idea实体添加到我的TypeOrm(配置为mysql)中,并且似乎导入拒绝工作。添加文件后,typeorm不会成功初始化。

我已经重新安装了typeorm软件包,而且我不知道从哪里开始调试。我正在学习一个教程(https://www.youtube.com/watch?v=EHlhvy-fh90),其中没有出现此错误。我通过使用dockerized mysql替换了postgresql数据库而偏离了它。

我在设置节点-> mysql连接时遇到了一些麻烦,最终选择运行dockerized mysql 5来解决auth错误(遵循此答案:https://stackoverflow.com/a/50167617/9043642)。如果没有idea.entity.ts文件,则连接将通过(使用orm)进行连接,因此我不希望数据库出现问题。

这是我的idea.entity.ts文件的外观。它有效地遵循了文档(https://docs.nestjs.com/techniques/database)中的示例。复制并粘贴后,文档示例仍然会出现相同的错误。

import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  CreateDateColumn,
} from 'typeorm';

@Entity()
export class IdeaEntity {
  @PrimaryGeneratedColumn('uuid') id:string;

  @CreateDateColumn() created:Date;

  @Column('text') idea:string;

  @Column('text') description:string;
}

我在运行时遇到以下错误

[Nest] 14034   - 07/02/2019, 1:00 PM   [TypeOrmModule] Unable to connect to the database. Retrying (1)... +19ms
[0] /home/miko/node/ideas/src/idea/idea.entity.ts:2
[0] import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
[0]        ^
[0] 
[0] SyntaxError: Unexpected token {
[0]     at Module._compile (internal/modules/cjs/loader.js:718:23)
[0]     at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
[0]     at Module.load (internal/modules/cjs/loader.js:641:32)
[0]     at Function.Module._load (internal/modules/cjs/loader.js:556:12)
[0]     at Module.require (internal/modules/cjs/loader.js:681:19)
[0]     at require (internal/modules/cjs/helpers.js:16:16)
[0]     at Function.PlatformTools.load (/home/miko/node/ideas/node_modules/typeorm/platform/PlatformTools.js:107:28)
[0]     at /home/miko/node/ideas/node_modules/typeorm/util/DirectoryExportedClassesLoader.js:30:69
[0]     at Array.map (<anonymous>)
[0]     at Object.importClassesFromDirectories (/home/miko/node/ideas/node_modules/typeorm/util/DirectoryExportedClassesLoader.js:30:10)

值得注意的是,数据库连接失败。同样,如果没有想法实体,则连接很好。预期的结果是[InstanceLoader] TypeOrmCoreModule dependencies initialized。我将如何成功创建这样的实体?

3 个答案:

答案 0 :(得分:0)

最终是一个混乱的ormconfig.json文件。确保遵循以下格式:https://github.com/nestjs/nest/blob/master/integration/typeorm/ormconfig.json

答案 1 :(得分:0)

我知道现在有点晚了,但这可以帮助某人。我遇到了同样的错误,一切都对我有用,最终我从教程中克隆了一个仓库,并试图找出有什么不同。经过几次迭代后,对我有用的是从此更改我的原始nodemon.json文件:

{
  "watch": ["dist"],
  "ext": "js",
  "exec": "node dist/main"
}

对此:

{
  "watch": ["src"],
  "ext": "js",
  "ignore": ["src/**/*.spec.ts"],
  "exec": "ts-node -r tsconfig-paths/register src/main.ts"
}

实际上,只需更改“ exec”参数即可。

希望这对某人可能有所帮助。

答案 2 :(得分:0)

将实体路径添加为dist文件夹

{
    "type":"postgres",
    "host":"localhost",
    "port":"5432",
    "username":process.env.USERNAME,
    "password":process.env.PASSWORD,
    "database":process.env.DATABASE,
    "synchronize":true,
    "logging":true,
    "entities": ["dist/**/**.entity{.ts,.js}"]    
}