Installation

configure in app.module.ts
create a .env file
APP_NAME=NESTJS
then import in app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { HelloModule } from './hello/hello.module';
import { UserModule } from './user/user.module';
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [HelloModule, UserModule, ConfigModule.forRoot({ isGlobal: true })],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
// Now it is aceessible and we can load env variables
// now we are using env in app.service.ts
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class AppService {
constructor(private readonly configService: ConfigService) {}
getHello(): string {
const appName = this.configService.get<string>('APP_NAME', 'default_value');
return `Hello from ${appName}!`;
}
}
output -

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { HelloModule } from './hello/hello.module';
import { UserModule } from './user/user.module';
import { ConfigModule } from '@nestjs/config';
import z from 'zod';
@Module({
imports: [
HelloModule,
UserModule,
ConfigModule.forRoot({
isGlobal: true,
validationSchema: z.object({
APP_NAME: z.string().default('defaultAPP'),
}),
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
export default () => ({
appName: process.env.APP_NAME || 'MYNESTAPP',
});
// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { HelloModule } from './hello/hello.module';
import { UserModule } from './user/user.module';
import { ConfigModule } from '@nestjs/config';
import appConfig from './config/app.config';
// import z from 'zod';
@Module({
imports: [
HelloModule,
UserModule,
ConfigModule.forRoot({
isGlobal: true,
// validationSchema: z.object({
// APP_NAME: z.string().default('defaultAPP'),
// }),
load: [appConfig],
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
// app.service.ts
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class AppService {
constructor(private readonly configService: ConfigService) {}
getHello(): string {
const appName = this.configService.get<string>('appName');
return `Hello from ${appName}!`;
}
}