개발 환경세팅하면서 겪은 일..

cometLEE·2023년 10월 5일
0

nodeJS

목록 보기
9/9

서론

팀 프로젝트 환경 구성을 맡게 되어서 진행 중에 있었던 일을 적어보려고 합니다.
다른 사람들이 이 글을 본다면 하지 않아도 될 삽질에 대해 알고 가셨으면 하셔서..
환경은 다음과 같습니다.

  • IDE : VSCODE

  • SERVER : nodejs

  • Client : AndroidStudio

  • DB : mongodb(mongoose)


안드로이드 스튜디오를 다뤄보지 않았기에.. 걱정이 많았습니다.
일단 먼저 vscode에 nodejs 설정을 하고 시작을 했습니다.

첫 번째 문제

android에서는 어떻게 server로 통신을 하나요??

이에 대한 부분에 대해 지식이 없어서 찾아본 결과, retrofit2이라는 대표적인 library를 알게 되었습니다.

Retrofit?

  • RestAPI 통신을 위해 개발됨
  • OkHttp 라이브러리의 상위 구현체
  • HTTP프로토콜 형식
  • 가독성 좋음
  • 간단한 구현

따라서 retrofit을 사용해야겠구나.. 싶어서 사용해보려고 하였습니다.


해야할 것

  1. Gradle 의존성 추가해주기
  2. 인터넷 권한설정해주기(HTTP통신)
  3. 인터페이스 생성

1. Gradle 의존성 추가해주기

AndroidStudio의
build.gradle kts파일에 다음과 같이 추가합니다.

2. 인터넷 권한 설정

manifest파일에 다음과 같이 설정해줍니다. </application> 위에 작성하시면 됩니다.

3. 인터페이스 생성

개발공부 님의 블로그를 참고하면서 작성했습니다.. 죄송합니다. 따라하시면 됩니다..


첫번째 문제에서 막혔던 부분!

URL을 통해 http통신 접근이 가능해지는데, http://10.0.2.2를 사용한 이유에 대해 설명하겠습니다.

원래는 localhost로 테스트하지 않습니까? 따라서 localhost를 입력해서 진행해보았는데.. 실패하더라구요. 그래서 이유를 찾아보았습니다.

안드로이드 공식 홈페이지
androidStudio 에뮬레이터에서 local로 접속을 하기 위해선 loopback 주소인 10.0.2.2로 접근을 해야 한다는 것이었습니다.

따라서 10.0.2.2로 접근을 해보았습니다.

이처럼 에뮬레이터 안에서 10.0.2.2로 접근해보았습니다


두 번째 문제

다음은 server쪽입니다. 저희 팀은 nodejs - mongodb를 사용하기로 하였습니다.
mongodb atlas에 연결하기 위해서는 mongodb모듈 혹은 mongoose모듈이 필요합니다.

그리고 mongodb atlas에서는 db연결을 위해 URL을 제공합니다.

driver에 들어가서 nodejs로 설정하시면 url을 제공합니다.
이번에 mongodb를 사용하면서 dbname을 선택해야 했는데, .env파일에 url을 저장하고 그 내용을 가져와 사용하는 식으로 진행을 하였습니다.

제가 하고 싶었던 내용은 dbName은 그냥 url에서 설정하고 싶었습니다.

  • 하기 싫은 예시
 db = client.db("Anywhere"); //DB이름

내용이 잘 안나와 있어서.. 찾은 결과

URL=mongodb+srv://<DB_USER>:<DB_PW>@<CLUSTER_NAME>.mv8ughu.mongodb.net/<DB_NAME>?retryWrites=true&w=majority

이런 형식으로 작성하면 성공한다.

저는 /? 이런식으로만 나와있어서.. /<DB_NAME>으로 할 생각을 못했었습니다..
그래서 URL 맨 뒤에 /<DB_NAME>을 붙여서 진행하고 왜 안돼? ㅋㅋㅋㅋ쿠ㅜㅜㅜ


세 번째 문제

깃허브에 프로젝트 올리고 nodejs쪽 폴더 구성을 하고 있는데 갑자기 .env파일이 읽어지지가 않는것!!...

이 문제는 왜 그랬는지 찾지를 못했습니다... ...

그래서 방법을 찾았습니다.

# www.js는 express 시작파일
"nodemon -r dotenv/config ./src/bin/www"

프로그램을 구동할 때, node 커맨드의 -r 또는 --require 옵션으로 dotenv/config를 넘기는 방법도 있는데요 이 방법을 사용하면 dotenv 라이브러리를 코드에 직접 임포트하지 않아도 .env 파일에 저장된 환경 변수가 process.env에 설정됩니다.

다양한 .env 사용메뉴얼 - DaleSeo님의 블로그


진짜.. 해결법을 찾지 못해서 한 방법이지만 그래도 코드면에서 확실히 좀 더 깔끔해지고 나쁘지 않은 방법인 듯 합니다.

밑에 DB랑 Port 잘 불러와졌습니다 ^^


정리

누군가에겐 쉬운 문제고.. 그럴 수 있지만 저 같은 경우에는 아직 모르는게 너무 많아서요. 만약 다른사람들이 저와 같은 문제로 힘들어할 때 도움이 되었으면 좋겠습니다.

profile
server, kubernetes에 관심이 많이 있습니다

0개의 댓글