설치
pnpm add @nestjs/config
app.module.ts 설정 / 전역 설정
- ConfigModule.forRoot(configModuleConfig) 설정
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { GeocodingModule } from './modules/naver-mpas/geocoding/geocoding.module';
import { ConfigModule } from '@nestjs/config';
import { configModuleConfig, typeormMysqlConfig } from './config';
import { ChattingModule } from './modules/chatting/chatting.module';
import { UsersModule } from './modules/users/users.module';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
ConfigModule.forRoot(configModuleConfig),
TypeOrmModule.forRootAsync(typeormMysqlConfig),
GeocodingModule,
ChattingModule,
UsersModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
configModuleConfig 설정
- src/.env.naver-maps 와 src/.env.typeorm-mysql 두 개가 있다
- 두 개의 env를 불러오기 위하여 envFilePath에 배열을 이용
- isGlobal을 이용해서 전역 사용
import { ConfigModuleOptions } from '@nestjs/config';
export const configModuleConfig: ConfigModuleOptions = {
envFilePath: ['.env.naver-maps', '.env.typeorm-mysql'],
isGlobal: true,
};
env의 변수 불러와서 사용하는 방법
- 예를들어 service에서 constructor에 configService를 선언한다.
- 사용할 때는 this.configService.get('NAVER_CLIENT_ID') 이러한 방법으로 configService에서 get을 이용하여 불러와 사용한다.
import { Injectable } from '@nestjs/common';
import axios from 'axios';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class GeocodingService {
constructor(private configService: ConfigService) {}
async getGeocoding(searchKeyword: string) {
return axios
.get(`https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode?query=${searchKeyword}`, {
headers: {
'X-NCP-APIGW-API-KEY-ID': this.configService.get<string>('NAVER_CLIENT_ID'),
'X-NCP-APIGW-API-KEY': this.configService.get<string>('NAVER_CLIENT_SECRET'),
},
})
.then((response) => {
return response.data;
})
.catch((error) => {
console.log('error', error);
});
}
}