nest js Mongodb Atlas 연결 문제 (환경변수 읽기 문제)

박종혁·2021년 12월 6일
0
post-thumbnail

문제 상황 및 분석

nest cli로 생성한 기본 폴더구조의 src>app.module.ts내에서 db 연결을 시도

DB를 연결하기 위해 .env 파일에 db 유저와 비밀번호 db name을 작성하고 읽어오려 하였으나 실패

1. 공식 문서에 따라 @Module내의 imports에서 forRoot로 mongodb atlas에 연결 시도 > 실패
2. 문법의 문제일 가능성 고려하여 검색시 나온 다양한 문법으로 forRoot()안의 connection string 작성 > 실패

3. async 문제일 가능성 고려하여 forRootAsync() 문법으로 시도 > 실패
4. 지속적인 MongoserverError: bad auth : Authentication failed에러에 connection string 다시 확인 및 새로운 유저 생성하여 연결 시도 > 실패
5. mongodb atlas의 whitelist 점검 후 다시 시도(이미 이전에 ip등록이 완료된 상태) > 실패
6.localhost로 연결 > 성공

추정 오류 가능성 :

connection string error
env file string error
cannot read env file

문제 원인

로컬 연결은 성공하나 atlas 연결시 실패인 것이 이상이상
.env 파일을 못 읽는 것이 아닌가 하는 합리적 의심 발생
합리적 의심을 통해 환경변수 없이 직접 string으로 connection uri 찍으니 성공...

env 파일을 당연히 불러올것이라는 이상한 생각이 문제

문제 해결

환경 변수 읽어주기 위해 친숙한 dotenv친구 시도하려 하다 발견한 @nestjs/config모듈
import 하고 @Module내 imports에서 forRoot()로 실행 후 mongo atlas 접속하게 함 > 성공

결론

환경 변수 사용시 불러오는 것을 잊어 발생한 문제
nest 사용시 @nestjs/config 모듈 사용 권장(일단)

당연히 .env를 불러오는 곳은 없다
req.params, req.body불러오는 코드 짜다가 ${}안의 값들이 자연스럽게 불러와지는것에 process.env도 동일할 것으로 혼동한 것이 원인

profile
메모 메모

0개의 댓글