• 문제 : 게임방 생성 API test시 Type definition error 발생

  • 원인 : domain 생성자를 인식하지 못해서 생기는 에러, @Builder 어노테이션을 사용하고 있는데 생성자를 만들어주는 부분이 없다면 발생할 수 있다. ( 우리 프로젝트의 경우 GameRoom domain 에서 @Builder 를 사용하고 있었다. _
  • 해결 : @AllArgsConstructors, @NoargsConstructors 어노테이션 추가

 

 

※ 다음은 stackoverflow 에서 해당 에러에 대해 설명되어있는 부분이다.

This could also happen if you are using @Builder from lombok but haven't defined getter/setter neither explicitly nor by @Data as happened in my case, reason being builder uses empty constructor to first create an empty object and then uses setter to set the properties.

 


[ 참고자료 ]

 

https://stackoverflow.com/questions/51014320/spring-type-definition-error-when-posting-a-new-object-using-a-rest-service

 

Spring: Type definition error when posting a new object using a REST service

I have an object which gets two parameters through a json POST request to create a new entry in the database and I get this error: "Type definition error: [simple type, class ffuentese.rest_ex...

stackoverflow.com

https://miinsun.tistory.com/142

 

[JAVA] Type definition error: Cannot construct instance of 해결 방법

💻 실습 환경 Eclipse JDK 11 📌 원인 : domain의 생성자를 인식하지 못해서 생기는 에러 원래 있던 생성자에 @Builder 어노테이션이 있는데, 어째선지 스프링이 인식하지 못한다. 어쩔 수 없이 새로운

miinsun.tistory.com

https://blog.naver.com/sb2chun/222660832080

 

[Lombok] @Builder @NoArgsConstructor 관련 에러

@Builder와 @NoArgsConstructor를 같이 쓰면 Error 발생. why? @Builder를 적용하는 것은 @AllArgs...

blog.naver.com

 

  • 문제 : 인텔리제이 콘솔에 다음과 같은 에러 메세지가 떴다 : nonuniqueresultexception: query did not return a unique result
  • 원인 : Database Corruption 가 원인이다. 즉, 이 에러는 DB에서 조회한 결과가 중복이 될 때 발생한다. 현재 프로젝트에서 사용하고 있는 MySQL DB를 확인해 보니 같은 값을 가지는 항목들이 있었다.
  • 해결 방법 : DB를 싹 날려버리고 다시 실행시키니 해결이 되었다 : ) 당황하지 말고 해당 DB와 Repository에서 어떤 형식으로 조회하고 있는지를 확인해 보자 ! 

 

[ 참고자료 ]

https://confluence.atlassian.com/bamkb/database-corruption-query-did-not-return-a-unique-result-2-297672184.html

 

Database Corruption - query did not return a unique result: 2 | Bamboo | Atlassian Documentation

Database Corruption - query did not return a unique result: 2

confluence.atlassian.com

https://alalstjr.github.io/java/2019/06/27/JPA-Repository-%EC%BF%BC%EB%A6%AC-limit-%EC%84%A4%EC%A0%95/

 

JPA Repository 쿼리 limit 설정

You may find interesting: 인텔리제이 Lombok 셋팅 인텔리제이 Lombok 셋팅 Posted by 쭌프로 on September 18, 2019 Spring Security 공부 Spring Security 공부노트 Posted by 쭌프로 on July 17, 2019

alalstjr.github.io

 

  • 콘솔에 다음과 같은 에러 메세지가 떴다 : could not resolve view with name / dispatcherservlet error
  • 원인: Index.html 파일 자체가 없기 때문 ! view를 반환하는 @Controller 어노테이션을 사용했다.
  • 해결 방법 : @Controller → @RestController 바꾼뒤 해결

 

@Controller 와 @RestController 의 차이 ? 

  • 전통적인 Spring MVC의 컨트롤러인 @Controller와 Restuful 웹서비스의 컨트롤러인 @RestController의 주요한 차이점은 HTTP Response Body가 생성되는 방식이다.
  • 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용한다.
  • @RestController는 @Controller에 @ResponseBody가 추가된 것이다. RestController의 주용도는 Json 형태로 객체 데이터를 반환하는 것이다. 최근에 데이터를 응답으로 제공하는 REST API를 개발할 때 주로 사용하며 객체를 ResponseEntity로 감싸서 반환한다.

[ 참고자료 ]

https://mangkyu.tistory.com/49

 

[Spring] @Controller와 @RestController 차이

Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있습니다. 전통적인 Spring MVC의 컨트롤러인 @Controller와 Restuful 웹서비스의 컨트롤러인 @RestController의 주요한 차이점

mangkyu.tistory.com

 

 

 

1. ERR_CONNECTION_REFUSED

이 오류가 떴다? 그럼 백엔드 서버가 내려갔는지 확인해 보자 ^__^ 

 

https://kinsta.com/blog/err_connection_refused/

 

How to Fix the ERR_CONNECTION_REFUSED Error in Chrome (9 Tips)

As with most error messages, ERR_CONNECTION_REFUSED lets you know that something has gone wrong, without being kind enough to tell you why it’s happened.

kinsta.com

 

2. JSON.parse 에러

해당 JSON.parse 에러는 프론트엔드쪽 코드에 보통 다음과 같은 문제가 있었다.

이 에러는 특정문자(\r, \n, \t, \f)가 포함되어 있을때의 에러이다.

이럴땐 특정문자(\r, \n, \t, \f)를 다음과 같이 치환해주면 정상적으로 파싱되는 것을 볼 수 있다.

  •  testData.replace(/\n/gi, '\\n');
  •  testData.replace(/\r/gi, '\\r');
  •  testData.replace(/\r\n/gi, '\\r\\n');
  •  testData.replace(/\r/gi, '\\r').replace(/\n/gi, '\\n')
  •  ※ testData.replace(/\r/gi, '\\r').replace(/\n/gi, '\\n').replace(/\t/gi, '\\t').replace(/\f/gi, '\\f')

 

https://0taeng.tistory.com/37

 

JSON.parse 에러

JSON.parse 시에 에러나는 경우에 해당 사항인지 확인해보고 해결되셨으면 좋겠습니다. 해당 JSON.parse 에러는 특정문자(\r, \n, \t, \f)가 포함되어 있을때의 에러입니다. var testData = '{"test":"테스트\r\n

0taeng.tistory.com

 

3. 403 에러 Forbidden 에러

토큰이 만료되었는지 확인해보자 ! 

보통 이 에러는 토큰이 만료된 상태로 토큰값이 필요한 API를 시도할 때 발생한다. 

 

※ 오늘 발생한 문제 : 카카오 회원가입이 되지 않고, redirect 되지 않는 문제

 

BE 코드 수정 부분

redirect_uri 주소가 localhost:8080으로 시작되는 백엔드 사용 로컬테스트 서버로 되어있었는데 (주석처리 된 부분), 그 부분을 프론트엔드 사용 로컬테스트 서버인 localhost:3000번으로 변경해 주었다.

 

 

FE 코드 수정 부분

 

 

문제가 발생했을 때 위의 사진과 같이 instance.post(`auth/kakao/callbak`,code)로 잘못 작성되어 있었다.

 

 

위와 같이 post('auth/kakao/callbak',code) -> get(`auth/kakao/callback?code=${code}`) 로 수정

 

 

그리고 원래 REACT_APP_BASE_URL에 백엔드에서 배포한 서버주소가 들어가 있었는데, 그 부분에 프론트엔드에서 사용하는 로컬테스트 서버인 localhost:3000을 넣고, REACT_APP_API_URL 부분에 백엔드 배포 서버를 넣어주니 정상 작동 되었다.

 

 


[ 참고 자료 ]

https://data-jj.tistory.com/53

 

REST-API 활용한 카카오 소셜 로그인 구현(feat. React)

프로젝트를 진행하면서 소셜 로그인 구현을 맡게 되었다. 다들 프론트엔드는 소셜 로그인에서 할게 많이 없다 쉽다~, 그중에서 카카오가 가장 쉽다~ 이렇게 얘기해서 방심했다. 그렇게 6일간의

data-jj.tistory.com

 

+ Recent posts