NestJs: Невозможно прочитать переменные env в файлах модуля, но можно в служебных файлах? - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть файл .env в корне моего проекта NestJs с некоторыми переменными env.

Странно то, что я могу читать переменные в служебных файлах, но не в файлах модулей.

Таким образом, в служебном файле, например users.service.ts, это работает:

saveAvatar() {
    const path = process.env.AVATAR_PATH    // returns value from .env
}

Однако при доступе к пути в файле модуля, например auth.module.ts, возвращается пустое значение:

@Module({
    imports: [
       JwtModule.register({
          secretOrPrivateKey: process.env.SECRET   // process.env.SECRET returns an empty string
       })
    ]
})

Почему это так? Как я могу надежно обращаться к переменным окружения в файле .env в NestJs?

1 Ответ

1 голос
/ 14 апреля 2019

Ваш файл .env еще не прочитан, когда создается экземпляр JwtModule.Так что либо прочитайте его раньше, например, в вашем main.ts до создания вложенного приложения, либо лучше: создайте ConfigService и сделайте явную зависимость от вашей конфигурации:

JwtModule.registerAsync({
    imports: [ConfigModule],
    useFactory: async (configService: ConfigService) => ({
      secretOrPrivateKey: configService.jwtSecret,
    }),
    inject: [ConfigService],
}),

См. этот ответ о том, как создать ConfigService.

...