Sachin Yadav
Sachin Yadav

Reputation: 313

Nestjs: Unable to read 'env' file variables

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 {}

Upvotes: 0

Views: 3306

Answers (1)

user10057478
user10057478

Reputation:

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.

Upvotes: 2

Related Questions