TypeORM迁移PostgreSQL时触发栈溢出错误求助
TypeORM迁移触发栈溢出及循环依赖问题求助
执行TypeORM迁移时出现栈溢出错误,原项目中遇到该问题后,新建空白项目仍可复现。
配置文件(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存在循环依赖导致无限循环,于是在该文件第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)
可见当存在循环依赖时,DirectoryExportedClassesLoader.ts会因递归调用触发栈溢出错误,恳请协助解决!
内容的提问来源于stack exchange,提问作者Christian Ayscue
相关产品推荐
相关产品推荐

