2024. 9. 12. 10:04ㆍ[Node.js_6기 본캠프 TIL]
JWT를 헤더에서만 사용하는 것 때문에 수정과 테스트를 반복하다가 정신을 차려보니 이미 11일이 지나있었다. 조금 늦었지만, 트러블슈팅 관련 기록을 남겨두기로 했다.
▶ 쿠키 대신 헤더에 토큰 부여하기
JWT로 ACCESS TOKEN을 쿠키에 부여하는 방법만 배웠는데, 헤더에서만 사용되어야 한다고 하니 난관이 예상되었다. 관련 다행히도 res.cookies였던 토큰 관련 코드를 res.setHeader나 res.header로 변경하니 헤더에 들어가기는 했다.
그러나 헤더에 부여된 이 정보가 /api/characters 같은 다른 API까지 연결되지 않아, 인증 로직 구현이 불가능했다.
user_id 기반으로 ACCESS TOKEN이 생성되지 않아, 유저가 body 입력하는 account 기준으로 생성했던 문제도 코드를 점검하며 수정했지만... 여전히 로그인 API에서만 유효했다. env 파일에 secret key를 넣고 불러오는 것도 오류가 발생해서 결국 잡지 못하고 user.router 파일에 구현했는데 인증 관련해서 유독 이해도가 부족한 것인지 사고가 많이 난다.
인증 로직이 기능해야 구현할 수 있는 캐릭터 생성 등의 API는 시간 관계상 해설 영상이나 강의를 듣게 된 후에 따로 수정해보아야 할 것 같다.
▶ env 파일 구현하기
github에 env 파일이 올라가지 않기 때문에 EC2 환경에서 배포할 때 별도로 파일을 생성해주어야 한다는 것을 뒤늦게 알았다. 이상하게 모듈이 연결이 되지 않는다거나, shema.prisma 파일에서 특정 코드를 불러올 수 없다고 하는 것이 다 env 파일 이슈였다.
서치해보니, 리눅스 환경에서 해당 파일을 구현할 수 있었다. 숨김 파일까지 모두 확인할 수 있는 명령어로 정상적으로 생성된 것을 확인하고 서버를 재가동했다. 그러나 같은 문제가 계속 발생했고, dotenv라는 모듈을 추가해보면 된다는 글을 보게 되었다.
npm i dotenv 명령어로 설치하려고 하니, 기존에 설치된 node_module 파일과 충돌하여 오류가 발생했다.
yarn으로 설치해야 하는데, npm을 사용해서 발생한 문제였다. 다행히도 yarn add dotenv로 해결할 수 있었다. 문제는 이러한 변경사항들을 EC2 환경에도 적용을 해야 하는데, 수정사항만 반영하는 것이 쉽지 않아보였다. 결국 몇몇 글에서 추천하는 방식인 폴더 삭제 후 재설치를 진행했다.
그리고 드디어! 정상적으로 AWS를 통한 배포에 성공했다. 서버에서 테스트하면 헤더에서 토큰이 유지되려나 했지만, 여전히 되지 않았다. 코드가 근본적으로 문제가 있는 것 같다.
'[Node.js_6기 본캠프 TIL]' 카테고리의 다른 글
CH 3 풋살 온라인 프로젝트 - 트러블 슈팅 0919 (0) | 2024.09.19 |
---|---|
CH 3 풋살 온라인 프로젝트 - 트러블 슈팅 0913 (1) | 2024.09.13 |
CH 3 아이템 시뮬레이터 과제 - 트러블슈팅 0910 (1) | 2024.09.10 |
CH 3 아이템 시뮬레이터 과제 - 트러블슈팅 0909 (0) | 2024.09.09 |
AWS에서 사라진 EC2 찾기 (1) | 2024.09.06 |