Express를 실행하기 위해 먼저 yarn을 설치
> npm install -- global yarn
라이브러리 설치 커멘드 실행
→ package.json을 바탕으로 자동으로 라이브러리를 한꺼번에 설치
> yarn
Express 실행
> yarn start
그런데 아래와 같은 오류가 나타났다.
" MongooseServerSelectionError: connect ECONNREFUSED ::1:27017 "
아무래도 MongoDB 연결에 문제가 생긴 듯하다.
.env 파일 내부를 살펴보자
SERVER_PORT=5001
MONGODB_URL="mongodb://localhost:27017/myDB"
겉으로 보기에는 아무 문제 없는 것 같은데...
챗GPT의 도움을 빌려보니, 아래와 같은 답변을 받았다.
MongoDB가 실행되고 있지 않습니다. MongoDB를 시작하고 실행 중인지 확인하세요
MongoDB는 잘 실행되고 있는 것 같다.
좀 더 확실하게 하기 위해 서비스에 접속해서 확인해보았다.
MongoSB Server가 실행 중이라고 뜬다.
MongoDB가 localhost:27017에서 실행 중이 아닙니다. 이 경우 연결 URL을 수정해야 합니다.
서버가 잘 떴는지 확인핳기 위해 localhost:27017 에 접속하니 위와 같은 메세지가 떴다.
네이티브 드라이버로 접근하지 않고 HTTP로 접근했다는 뜻인 것 같다. 서버는 잘 실행되고 있는 것으로 보인다.
로컬 방화벽이 MongoDB 연결을 차단하고 있습니다. 로컬 방화벽을 잠시 비활성화하고 연결을 다시 시도하거나, 방화벽 설정을 수정하여 MongoDB 연결을 허용해야합니다.
아래 링크를 참고하여 로컬 방화벽에 접속하였다.
https://www.pfu.ricoh.com/imaging/downloads/manual/ss_webhelp/hn/help/webhelp/topic/refer_firewall.html?model=ix1600
특정 포트 27017로 연결허용 설정한 뒤 다시 연결 시도를 해보았다. 그러나 실패.
위의 3개의 방법으로도 해결이 안되서 구글링을 해보았다.
https://www.mongodb.com/community/forums/t/mongooseserverselectionerror-connect-econnrefused-127-0-0-1-27017/123421
위 링크에서 해답을 찾았다.
I just found a solution in the internet ,
If you are using latest nodejs (v17.x) , then try updating mongodb url from localhost to 127.0.0.1
This worked for me
즉, MongoDB URL에서 localhost 부분을 127.0.0.1 로 바꾸는 것이다.
MONGODB_URL="mongodb://127.0.0.1:27017/myDB"
로 수정한 뒤, Express 실행해보았더니..
성공!!!
.env파일의 MongoDB URL을 "mongodb://localhost:27017/myDB" → "mongodb://127.0.0.1:27017/myDB"로 변경
의외로 해결방법이 너무 간단했다. 이 간단한 에러를 4시간이나 붙잡았다니..