Error Occured
최근 사이드 프로젝트를 시작하면서 NestJS
를 다루게 되었다.
JWT
모듈을 .env
파일을 이용하여 다루던 도중 다음과 같은 에러를 만나게 되었다.
Problem Solving Method
아무리 코드를 뒤져봐도 어떤 문제가 보이지 않아 구글링을 시작했을 때
다음과 같은 해결책을 찾을 수 있었다.
Before Code
기존의 내 코드는 다음과 같았다.
// in auth.module.ts
JwtModule.register({
secret : process.env.JWT_SECRET,
signOptions: {
expiresIn: 60 * 60
}
}),
이 코드는 .env 에 있는 JWT Secret 을 불러와 사용하는 코드였는데,
env variable 를 불러오는 것과 애플리케이션이 실행되는 것은 비동기 처리라는 것을 알게되었다.
따라서 JwtModule
에서는 다음과 같은 method 를 지원했다.
JwtModule.registerAsync({})
해당 메소드는 환경변수를 읽을 때 까지 모듈 설정을 유보할 수 있도록 도와준다.
따라서 다음과 같이 작성하여 해결하였다.
After Code
JwtModule.registerAsync({
// .env 에 등록되어 있는 것을 가져오는것이 비동기 작업이므로, 초기화 시에 env 요소를 못불러온 상태일 수 있음.
// 따라서 registerAsync, ConfigService 를 사용해 동기적으로 작업함
inject: [ConfigService],
useFactory: (config: ConfigService) => ({
secret: config.get<string>('JWT_SECRET'),
signOptions : {
expiresIn: 60 * 60
}
})
}),
나와 같은 뉴비 개발자들에게 도움이 되었길 바란다.
- 이 글의 구글링 결과 원문을 찾지 못하였습니다. 찾는대로 레퍼런스를 기록합니다.
Top comments (0)