我有两个.env文件,例如dev.env和staging.env。我正在使用typeorm作为我的数据库ORM。我想知道每当我运行应用程序时如何让typeorm读取其中一个配置文件。Error: No connection options were found in any of configurations file来自typeormmodule。
dev.env
staging.env
Error: No connection options were found in any of configurations file
您可以创建一个ConfigService来读取与环境变量相对应的文件NODE_ENV:
NODE_ENV
1)NODE_ENV在您的启动脚本中设置变量:
"start:dev": "cross-env NODE_ENV=dev ts-node -r tsconfig-paths/register src/main.ts", "start:staging": "cross-env NODE_ENV=staging node dist/src/main.js",
2)在ConfigService中读取相应的.env文件
@Injectable() export class ConfigService { private readonly envConfig: EnvConfig; constructor() { this.envConfig = dotenv.parse(fs.readFileSync(`${process.env.NODE_ENV}.env`)); } get databaseHost(): string { return this.envConfig.DATABASE_HOST; } }
3)使用ConfigService来建立您的数据库连接:
ConfigService
TypeOrmModule.forRootAsync({ imports:[ConfigModule], useFactory: async (configService: ConfigService) => ({ type: configService.getDatabase() // ... }), inject: [ConfigService] }),