팀 프로젝트 환경 구성을 맡게 되어서 진행 중에 있었던 일을 적어보려고 합니다.
다른 사람들이 이 글을 본다면 하지 않아도 될 삽질에 대해 알고 가셨으면 하셔서..
환경은 다음과 같습니다.
IDE : VSCODE
SERVER : nodejs
Client : AndroidStudio
DB : mongodb(mongoose)
안드로이드 스튜디오를 다뤄보지 않았기에.. 걱정이 많았습니다.
일단 먼저 vscode에 nodejs 설정을 하고 시작을 했습니다.
android에서는 어떻게 server로 통신을 하나요??
이에 대한 부분에 대해 지식이 없어서 찾아본 결과, retrofit2이라는 대표적인 library를 알게 되었습니다.
따라서 retrofit을 사용해야겠구나.. 싶어서 사용해보려고 하였습니다.
AndroidStudio의
build.gradle kts파일에 다음과 같이 추가합니다.
manifest파일에 다음과 같이 설정해줍니다. </application>
위에 작성하시면 됩니다.
개발공부 님의 블로그를 참고하면서 작성했습니다.. 죄송합니다. 따라하시면 됩니다..
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 잘 불러와졌습니다 ^^
누군가에겐 쉬운 문제고.. 그럴 수 있지만 저 같은 경우에는 아직 모르는게 너무 많아서요. 만약 다른사람들이 저와 같은 문제로 힘들어할 때 도움이 되었으면 좋겠습니다.