0

I am unable to read env file variables in the App Module. It's really strange that I those variables are accessable in "main.ts" file.

Here's the code in App Module:

console.log(process.env.DB_URI); // logs undefined

@Module({
  imports: [
    ConfigModule.forRoot({
      envFilePath: ['.env'],
      isGlobal: true,
      cache: true,
    }),
    UsersModule,
    FoodItemsModule,
    MacroCalculatorModule,
    MongooseModule.forRoot(process.env.DB_URI),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
Sachin Yadav
  • 128
  • 3
  • 12

1 Answers1

2

The thing is if your calling process.env in your app module it would only be available once your Nest dependencies are intialized.

Example:

`console.log(process.env.DB_URI);` // logs undefined because your dependencies are not 
                                //intialized

@Module({
  imports: [
    ConfigModule.forRoot({
      envFilePath: ['.env'],
      isGlobal: true,
      cache: true,
    }),
    UsersModule,
    FoodItemsModule,
    MacroCalculatorModule,
    MongooseModule.forRoot(process.env.DB_URI),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {
     console.log(process.env.DB_URI); // THIS WILL LOG YOUR INFORMATION, because it is 
                                     // called after dependecies are intialized.
}

Hope this clears your question.