【问题标题】:TypeORM migration gives Maximum call stack size exceeded error with PostgresTypeORM 迁移给出了 Postgres 的最大调用堆栈大小超出错误
【发布时间】:2022-10-19 09:54:08
【问题描述】:

当我运行迁移时,我收到以下错误。我最初在一个项目中有这个 - 现在我创建了一个新的空白项目,但仍然出现错误。这是 ormconfig.ts:


import { DataSource } from 'typeorm';

const env = {
  "DB_HOST":"localhost",
  "DB_PORT":5432,
  "DB_USERNAME":"postgres",
  "DB_PASSWORD":"postgres",
  "DB_DATABASE":"task-management",
}

export const connectionSource = new DataSource({
  migrationsTableName: 'migrations',
  type: 'postgres',
  host: env.DB_HOST,
  port: env.DB_PORT,
  username: env.DB_USERNAME,
  password: env.DB_PASSWORD,
  database: env.DB_DATABASE,
  logging: false,
  synchronize: false,
  name: 'default',
  migrations: ['migrations/**/*{.ts,.js}'],
});

我使用以下命令运行迁移: typeorm-ts-node-esm migration:run -d migrations/ormconfig.ts

这给出了以下错误:


 Error during migration run:
    RangeError: Maximum call stack size exceeded
        at /Users/christianayscue/Desktop/nestjsClass/nestjs-task-management/node_modules/src/util/DirectoryExportedClassesLoader.ts:29:43
        at Array.forEach (<anonymous>)
        at loadFileClasses (/Users/christianayscue/Desktop/nestjsClass/nestjs-task-management/node_modules/src/util/DirectoryExportedClassesLoader.ts:29:35)
        at /Users/christianayscue/Desktop/nestjsClass/nestjs-task-management/node_modules/src/util/DirectoryExportedClassesLoader.ts:27:42
        at Array.forEach (<anonymous>)
        at loadFileClasses (/Users/christianayscue/Desktop/nestjsClass/nestjs-task-management/node_modules/src/util/DirectoryExportedClassesLoader.ts:27:22)
        at /Users/christianayscue/Desktop/nestjsClass/nestjs-task-management/node_modules/src/util/DirectoryExportedClassesLoader.ts:30:17
        at Array.forEach (<anonymous>)
        at loadFileClasses (/Users/christianayscue/Desktop/nestjsClass/nestjs-task-management/node_modules/src/util/DirectoryExportedClassesLoader.ts:29:35)
        at /Users/christianayscue/Desktop/nestjsClass/nestjs-task-management/node_modules/src/util/DirectoryExportedClassesLoader.ts:30:17

我假设有一些循环依赖导致 DirectoryExportedClassesLoader.ts 中的无限循环,所以我在 DirectoryExportedClassesLoader.ts 的第 26 行放置了一个 console.log(JSON.stringify(exported)),我现在得到:

TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'DataSource'
    |     property 'driver' -> object with constructor 'PostgresDriver'
    --- property 'connection' closes the circle
    at JSON.stringify (<anonymous>)
    at loadFileClasses (/Users/christianayscue/Desktop/nestjsClass/typeormTest/src/util/DirectoryExportedClassesLoader.ts:29:25)

如果存在循环依赖关系,DirectoryExportedClassLoader.js 似乎可以保证得到最大调用堆栈大小超出错误,因为它在遇到对象属性时是自递归的。

请帮忙!

【问题讨论】:

    标签: postgresql typeorm


    【解决方案1】:

    从 DataSource 配置对象中删除此键修复了该问题。

    migrations: ['migrations/**/*{.ts,.js}']
    

    这是那些需要大量试验和错误才能解决的问题之一......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多