⌨️/Node.js

[Node.js] The 'uri' parameter to 'openUri() must be a string··· 에러

S0 2024. 1. 24. 00:46

내일배움캠프: Node.js_4기

22일차 TIL

 

~오늘의 수강 과목~

1. Node.js 입문 2주차 (이용우 튜터님)

 

2. Node.js 입문 개인과제 리뷰, 해설

 


 

1. 어떤 문제가 있었는지

.env (실제로는 제대로 작성함)
app.js / index.js

프로젝트를 진행하며 토큰을 보호하기 위해 .env, .gitignore 파일을 사용

vscode 내 터미널에서 MongoDB 연결 성공한 것 확인 완료

깃허브에 숨긴 파일 제외하고 제대로 올라간 것 확인 완료

 

그런데🥹!!!

aws ec2 터미널을 통해 git clone 후 서버 연결을 시도하니

MongoDB 연 결 에 실패하였습니다.
MongooseError:
The 'uri' parameter to 'openUri() must be a string, got "undefined". Make sure the first parameter to mongoose.connect) or mongoose.createConnection)' is a string.

이러한 에러 메시지가 뜸

🥹?!!

 

 

 

2. 내가 시도해본 것들

우선 구글링을 해보니 같은 상황인 사람들이 꽤 보임

해결이 된 사람들은 오탈자, 경로 지정 등의 문제가 있었음

나는 몇번을 확인해봐도 그런 쪽의 문제 없이 잘 작성함

 

일단 .env 파일이 연결되지 않아서 생긴 문제는 확실하기 때문에

주석 참고

app.js와 index.js 파일을 돌아다니며 import 부분을 조금 다르게 작성

여전히 해결되지 않음

 

보고 또 본 커밋의 흔적..

애꿎은 코드만 계속 수정하고 똑같은 내용으로 검색만 하다가

결국 튜터님을 찾아감..

 

 

 

3. 어떻게 해결했는지

튜터님은 에러 메시지를 보자마자 문제를 아셨다..🥹👍

.env 파일은 깃허브에 올라가지 않도록 설정한 것이기 때문에

깃허브에서 클론을 받아오는 지금의 상황에서는 .env 파일에 넣어둔 토큰이 보이지 않는게 당연한 결과였음

.env 파일 자체가 빠졌으니까!

(당연한 사실인데 코드에 문제가 생긴 줄 알고 생각이 거기까지 안갔다)

 

감동의 순간.....

vi .env 명령어를 통해

ssh 터미널 내에서 자체적으로 .env 파일을 새로 생성하고

기존 .env 파일 내의 코드를 복사+붙여넣기

의 방법을 통해 해결했다

 

 

 

 

4. 무엇을 새롭게 알았는지

이 방법으로는 당장 편하게 해결할 수는 있으나,

추후 .env 파일을 수정할 일이 생겼을 때 기존 파일과 연동이 되지 않기 때문에 일일이 따로따로 수정을 해줘야 함

튜터님께서 aws 자체에서 환경변수를 넣는 방법을 힌트로 주셔서 관련 문서들을 찾아 훑어봤다.

aws는 앞으로도 계속 사용할테니 다시 찬찬히 읽어봐야겠다!

 

튜터님이 주신 힌트로 나름대로 찾아본 링크들

AWS Key Management Service

AWS Amplify

AWS Fargate 사용 설명서

 

 

(+ .env 파일에서는 끝에 세미콜론(;)을 붙이면 제대로 작동하지 않았다)


오늘의 메모

  • 오늘의 TIL은 계속 응원해주신 ㄱㄱㅈ 튜터님께 바칩니다......🥹🤝

 

내일의 목표

  1. 노드 숙련 강의 열심히 따라가기
  2. 이번 개인 프로젝트 회고 작성

 

앞으로의 목표

  1. 노드 기초 계속해서 들여다보기......
  2. TIL 밀리지 않기