nestjs configuration으로 변수 관리하기

chanykim·2021년 10월 8일
0

https://docs.nestjs.kr/techniques/configuration

SQL에 사용할 아이디나 비밀번호, 계속 사용해야하는 URL
등등 그대로 코드에 적기엔 당연히 git에 올릴 때 보안에 문제가 있을 것이다.
그리고 계속 쓰는 URL를 남발하여 적었는데 중간에 URL을 바꿔야하는 경우가 생긴다면?
일일이 URL을 찾아서 바꿔야하는 경우가 생긴다.

이러한 번거로움을 해소하기 위해 configuration을 사용해 .env로 변수를 저장해두고 git에 올릴 때는 .ignore를 이용하여 막으면 된다.

nestjs 공식 홈페이지를 보면,

@Module({
  imports: [
    ConfigModule.forRoot({
      load: [configuration],
    }),
  ],
})
export class AppModule {}

이렇게 되어있는다. 저 configuration은 다른게 아니라 우리가 만들어야할 것이다.
내가 만든 것을 예시로 들면

import configuration from './config/configuration';

이렇게 만든 것을 import해서 받아오고 있다.
여기에 내용을 보면

export default () => ({
    client: {
    id: process.env.CLIENT_ID,
    secret: process.env.CLIENT_SECRET,
    redirect_url: process.env.REDIRECT_URL,
  },
    slack: {
    client_id: process.env.SLACK_CLIENT_ID,
    client_secret: process.env.SLACK_CLIENT_SECRET,
    sign_secret: process.env.SIGNING_SECRET,
    access_token: process.env.BOT_USER_OAUTH_ACCESS_TOKEN,
  },
});

이런 식으로 만들어져 있다.
그리고 process.env.#####은 .env 파일에 있는 변수들을 사용할 때 쓴다.
##### 부분은 .env에 있는 변수명이다.

configuration을 사용할 때는

configService.get('client.id')

으로 불러온다.

module에서 사용하려면 imports에서

 useFactory: (configService: ConfigService) => ({
        host: configService.get('database.host'),
        port: configService.get('database.port'),
}),

으로 사용한다.

profile
오늘보다 더 나은 내일

0개의 댓글