网站搜索

mysql - NestJS typeorm - 无法创建实体


我正在尝试向我的 TypeOrm(配置为 MySQL)添加一个 Idea 实体,但似乎导入无法正常工作。添加文件后,typeorm 无法成功初始化。

我已经重新安装了 typeorm 包,但我不知道从哪里开始调试。我正在跟随一个教程(https://www.youtube.com/watch?v=EHlhvy-fh90),在该教程中没有出现这个错误。我偏离了教程,将 PostgreSQL 数据库替换为 Docker 化的 MySQL。

我在设置 node -> mysql 连接时遇到了一些麻烦,最终选择运行一个 Docker 化的 MySQL 5 来解决认证错误(参考这个答案: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。我该如何成功创建这样的实体?

答案#1

最终变成了一个混乱的 ormconfig.json 文件。确保它按照以下格式: https://github.com/nestjs/nest/blob/master/integration/typeorm/ormconfig.json

答案#2

将实体的路径添加为您的分发文件夹

{
    "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}"]    
}