NX nest app как получить доступ к переменным окружения
Есть такая структура проекта, использующего nx nest для бекенда:
В моем файле app.module.ts
я настраиваю ConfigModule
так, чтобы он считывал файл .env
в зависимости от NODE_ENV, а затем я использую его для подключения к MongoDB.
const envFilePath = `../envs/.env.${process.env.NODE_ENV.toLowerCase() || 'development'}`;
@Module({
imports: [
ConfigModule.forRoot({
envFilePath,
isGlobal: true
}),
MongooseModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: async (configService: ConfigService) => {
console.log(configService.get<string>('MONGO_URI'));
return {
uri: configService.get<string>('MONGO_URI')
};
}
})
],
controllers: [AppController],
providers: [AppService]
})
export class AppModule {}
Но configService.get<string>('MONGO_URI')
всегда возвращает undefined, потому что, если вывести в консоль переменную __filename
, то получится <absolute-path>\dist\apps\backend\main.js
. То есть пути считаются из папки dist, которая лежит в самом корне nx проекта.
Вопрос: Как сделать, чтобы из app.module.ts
я обращался к ../envs/.env
файлу и все работало, так как я не хочу писать большие некрасивые пути из dist к src.
Еще возникла идея использовать в качестве конфигов .ts
файлы, но это тоже мне не кажется хорошей идеей, так как в файлах с кодом должен быть код, а не хранимые данные.