You can create a ConfigService that reads in the file corresponding to the environment variable NODE_ENV
:
1) Set the NODE_ENV
variable in your start scripts:
"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) Read the corresponding .env file in the ConfigService
@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) Use the ConfigService
to set up your database connection:
TypeOrmModule.forRootAsync({
imports:[ConfigModule],
useFactory: async (configService: ConfigService) => ({
type: configService.getDatabase()
// ...
}),
inject: [ConfigService]
}),
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…