2024.10.02-데모데이 트러블슈팅 정리
1) application server-side error
서버에서 발생하는 문제입니다.
1) 코드 오류 (Unhandled Error)
- 예외 처리가 되지 않은 코드에서 발생하는 오류입니다.
✅ 해결 방법
2) 데이터베이스 연결 문제
- MongoDB, MySQL 등의 DB 연결이 실패하면 서버 오류가 발생할 수 있습니다.
✅ 확인 방법
.env 파일에서 데이터베이스 URL을 올바르게 설정했는지 확인하세요.
3) 환경 변수 (.env) 누락
- 환경 변수가 설정되지 않았거나 process.env에서 값을 가져오지 못할 때 발생할 수 있습니다.
✅ 확인 방법
4) 잘못된 API 요청 (Invalid Request)
- 프론트엔드에서 예상과 다른 데이터를 보내면 서버에서 에러가 발생할 수 있습니다.
✅ 해결 방법
5) 서버 메모리 부족
- 너무 많은 요청이 들어오거나 메모리 누수로 인해 서버가 다운될 수 있습니다.
✅ 확인 방법
- 불필요한 서버 프로세스를 종료하고, pm2 restart all로 재시작하세요.
6) CORS 정책 문제
- 클라이언트와 서버의 도메인이 다르면 CORS 오류가 발생할 수 있습니다.
✅ 해결 방법
7) 서버 배포 문제
- Render, Vercel, AWS, Firebase 등 클라우드 서버에서 배포 시 환경 변수, 포트 설정, 빌드 오류 등을 확인해야 합니다.
2. BSONTypeError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer
나 CastError: Cast to ObjectId failed for value "someString" at path "_id"
MongoDB Atlas(클라우드 기반 MongoDB)에서는 _id 필드를 자동으로 생성합니다. 이미 만들어진 _id 필드를 만들거나 접속하려고 하기 때문에 오류가 발생했습니다.
브라우저에서 배포된 프론트와 연결하려고 했을때 server-side error가 발생하였는데 사실 프론트엔드는 int값으로 _id를 사용하는데 백엔드는 objectId(string)값으로 사용하려고 했기 때문입니다.
MongoDB Atlas 의 objectid는 절대 바꿀 수 없기 때문에 저희는 프론트 코드를 해서 string으로 일일이 바꾸었습니다.
후기) 코드잇 데모데이에 제공된 백엔드 api목록이 api/ 이렇게 쓰여 있었는데 해당값을 기반으로 경로를 설정하면 연결이 안되는 오류가 있었습니다.
이번에 spring boot를 공부하면서 보니 springboot에서는 api를 설정할 때 api로 경로가 설정되더라구요.
프론트는 next js, 백엔드는 springboot를 사용했다는 쓸데없는 추가정보...