Tentei corrigir de algumas formas o problema, inicialmente estava com Node.JS na versão 20 LTS, agora reduzir para versão 18, mas sempre obtenho o mesmo erro.
Na versão 20 inclusive por algum motivo o "typeorm-ts-node-esm", só funcionou o "typeorm-ts-node-commonjs", mas independente da forma o problema inicial não se resolveu. Obs: O create funciona e cria o arquivo, no entanto não gera nada no banco, fazendo o "run" dizer que não há pendencias.
Mensagem devolvida: No changes in database schema were found - cannot generate a migration. To create a new empty migration use "typeorm migration:create" command
Packages Criados:
*"typeorm": "ts-node ./nodemodules/typeorm/cli",
"migration:run": "npm run typeorm migration:run -- -d ./src/config/typeorm.ts",
"migration:generate": "npm run typeorm -- -d ./src/config/typeorm.ts migration:generate",
"migration:create": "npm run typeorm -- migration:create",
"migration:revert": "npm run typeorm -- -d ./src/config/typeorm.ts migration:revert"*
Comando executado:
*npm run migration:generate ./src/db/migrations/teste*
Arquivo de configuração dentro de "src/config"
import { DataSource, DataSourceOptions } from 'typeorm';
import { registerAs } from '@nestjs/config';
import { config } from 'dotenv';
config({ path: '.env' });
const dataSourceOptions: DataSourceOptions = {
type: 'postgres',
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
entities: [__dirname + '/../**/*.entity.{js,ts}'],
migrations: [__dirname + '/migrations/*.{js,ts}'],
synchronize: false,
};
export default registerAs('typeorm', () => config);
export const connectionSource = new DataSource(dataSourceOptions);
AppModule:
ConfigModule.forRoot({ isGlobal: true, load: [typeorm] }),
TypeOrmModule.forRootAsync({
useClass: PostgresConfigService,
inject: [PostgresConfigService],
useFactory: async (configService: ConfigService) =>
configService.get('typeorm'),
}),