
Minified React error #31
- 프론트엔드 : 백엔드가 보낸 에러 객체를 텍스트로 바꾸지 않고 그대로 화면에 그리려고 해서 터진 화면 에러
- 근본적인 원인: 백엔드에서 요청을 정상적으로 처리하지 못하고 에러 응답(timestamp, status, error, path)을 프론트엔드에게 보냈기 때문
백엔드에서 추적해본 부분
1. security > SecurityConfig.java
회원가입/이메일 관련 주소가 permitAll()로 허용되어있는지 확인 -> 없다면 시큐리티가 요청을 차단한 것
.requestMatchers("/api/login/**").permitAll()
위와 같이 로그인/회원가입 관련권한에서는 로그인, 회원가입, 마이페이지 주소만 로그인 없이 접근할 수 있도록 permitAll()이 되어있음.
이메일 인증 주소는 코드에서 확인 불가.
-> 이 상태라면 스프링 시큐리티가 이메일 인증 요청을 중간에 차단해버리기때문에 프론트엔드에서 React에러가 터짐
2. email > EmailController.java
이메일 인증 요청을 받는 URL 주소가 여기에 구현되어 있는지 확인
@RestController
@RequestMapping("/api/email")
위와 같이 구현되어 있는 것을 볼 수 있음
그러나, SecurityConfig.java에서는 /api/email/ 부분이 없기 때문에 차단 에러가 뜬 것
=> SecurityConfig.java에 .requestMatchers("/api/email/").permitAll() 이 줄을 추가하면
이메일 인증 요청이 EmailController로 들어갈 것으로 예상됨
3. signup > SignupController.java
EmailController에 주소가 없는 경우에, SignupController에 회원가입용 이메일 인증 주소가 들어있는지 확인
4. email > EmailService.java
주소와 보안 설정이 다 맞는데도 에러가 난다면, 실제 메일을 발송하는 SMTP 연동 로직이 올바른지 확인
private JavaMailSender mailSender; // 메일 발송을 위한 스프링 표준 도구 선언
//메일 발송 비즈니스 로직 메서드
public void mailSend(String setFrom, String toMail, String title, String content){
//Config에서 정의한 JavaMailSender객체 사용, MimeMessage 객체 생성
MimeMessage message = mailSender.createMimeMessage();
이외에도 추가적으로 try-catch문을 활용하여 실제 메일 발송 명령어와 에러 발생 시 시스템 다운을 막기 위한 예외 처리가 되어 있는 것을 확인할 수 있음 ( 여기서의 예외 처리는 요청이 서비스 레이어까지 정상적으로 도달했을 경우에만 동작함. 따라서 현재와 같은 이메일 인증 오류는 막을 수 없음 )
위의 경우에서는 Back의 코드를 보았으나 오류 해결은 production-back의 코드를 기준으로 하는 것이 맞음
IntelliJ에 production-back 코드를 클론해와서, 내 실제 네이버 계정을 연동하는 등의 환경변수 설정을 한 후, 추가 실습을 진행함
1. SwlugWebApplication을 Run
2. 포스트맨에 아래와 같이 실습하면 Body부분에 적은 메일로 결과와 같은 인증번호가 발송됨

오류 화면 (Objects are not valid as a React child)
- 상황: 백엔드 연동이 제대로 안 되었거나 에러 상태일 때, 스프링 부트가 timestamp, status, error, path가 담긴 객체(Object) 데이터를 리턴
- 원인: 리액트는 화면에 글자나 숫자가 올 줄 알고 출력하려 했는데, 뜬금없이 복잡한 객체 덩어리가 들어오니까 감당하지 못하고 화면을 하얗게 지우며 터짐
추가 실습으로 알게된 점
- 상황: production-back 코드를 가져와서 네이버 SMTP 환경 변수를 세팅하면, 백엔드가 메일을 발송하고 순수한 인증번호 숫자 325748을 리턴
- 결론: 올바른 환경 변수가 주입된 상태에서는 백엔드 서버 엔진과 외부 메일 연동 기능은 오류 없이 가동
-> 에러 발생 시 백엔드가 보낸 예외 객체 데이터 형식과 이를 안전하게 예외 처리(try-catch)하지 않고 화면에 바로 렌더링하려 한 프론트엔드의 방어 코드 부재가 맞물려 발생한 양방향성 버그
'SWLUG(2026) > 유지보수' 카테고리의 다른 글
| [SV 3주차] 블로그 부분 구현(1) (0) | 2026.07.15 |
|---|---|
| [SV 2주차] 이미지 로드 실패 (0) | 2026.07.08 |
| [5주차] item 설계 및 실습, 포스트맨 실습 (0) | 2026.05.19 |
| [4주차] member entity, order entity, cart entity 설계 / 포스트맨 실습 (0) | 2026.05.10 |
| [3주차] DB 설명 및 설계 & 프로젝트 실습 1차 (0) | 2026.05.06 |