NX nest app как получить доступ к переменным окружения

Рейтинг: 0Ответов: 1Опубликовано: 08.03.2023

Есть такая структура проекта, использующего 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 файлы, но это тоже мне не кажется хорошей идеей, так как в файлах с кодом должен быть код, а не хранимые данные.

Ответы

▲ 0

Решение: надо было всего-то переместить папку envs в корень nx проекта