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 файлы, но это тоже мне не кажется хорошей идеей, так как в файлах с кодом должен быть код, а не хранимые данные.
Ответы (1 шт):
Решение: надо было всего-то переместить папку envs в корень nx проекта
