본문 바로가기

전체 글534

[TroubleShooting] curl로는 재현되지 않는 CORS 에러, 원인은 서버가 아니라 브라우저였다 (with PNA) 📍 curl로는 재현되지 않는 CORS 에러, 원인은 서버가 아니라 브라우저였다 (with PNA)📝 TL;DRT&A dev 환경에서 특정 API 호출 시 CORS 에러로 실패했다.원인은 일반적인 CORS 문제가 아니라 Chrome의 Private Network Access(PNA) 정책이었다.dev 환경의 API 도메인은 내부 IP로 resolve 되는 반면, 호출하는 페이지는 public 사이트라서 브라우저가 "이 사이트가 로컬 네트워크 기기에 접근하려 합니다"라며 권한 확인을 요구했고, 그 권한이 허용되지 않은 상태라 요청이 막혔다.운영 환경은 API 도메인이 public IP(CDN)로 나가기 때문에 이 문제가 발생하지 않는다 — 내부망을 직접 노출한 dev 환경 고유의 이슈였다.증상카테고리 .. 2026. 8. 4.
[Trouble Shooting] Pages Router에서만 터진 "Module not found" — CJS/ESM exports의 함정 [Trouble Shooting] Pages Router에서만 터진 "Module not found" — CJS/ESM exports의 함정우리 도메인에 Pages Router로 작성한 코드를 빌드하는데 다음과 같은 에러가 발생했다. > Module not found: Package path ./thumbnail is not exported from package ... design-system-kit 같은 위젯인데 App Router 프로젝트에서는 멀쩡하게 빌드가 잘 되었는데, Pages Router에서만 빌드시 에러가 발생했다.📍 원인 분석 1 — 패키지가 어떻게 빌드되어 있었나search-header-widget@1.1.0 패키지는 CJS/ESM 듀얼 포맷으로 빌드가 되도록 설정이 되어있다. 그런.. 2026. 8. 3.
[Trouble Shooting] useEffect도 useMemo도 답이 아니었다 — 한 박자 늦는 state 📍 useEffect도 useMemo도 답이 아니었다 — 한 박자 늦는 state들어가며해외 T&A 상품 상세(PDP) 페이지에는 두 개의 예약 버튼이 있다. 하나는 옵션 영역 안의 예약 버튼이고, 다른 하나는 스크롤을 내리면 따라다니는 CTA 플로팅 버튼이다. 맡던 업무가 예상보다 빠르게 마무리 되어 리소스가 조금 남아 백로그를 살펴보다 눈에 띄는 티켓을 발견했다.필수 옵션을 선택하지 않았는데도 CTA 플로팅 "예약하기"를 누르면 결제 페이지로 넘어간다. 옵션 영역 버튼은 검증을 통과하지 못 하면 버튼이 disabled 처리가 되는데, CTA 플로팅 버튼은 클릭이 가능한 상태였다. 두 버튼이 같은 상태를 공유하지 못하고 있던 것이다.문제 발견버튼 disabled 처리는 옵션 컴포넌트(/item/ind.. 2026. 6. 24.
[Trouble Shooting] bingbot으로 인한 잘못된 API 요청 차단하기 📍 bingbot으로 인한 잘못된 API 요청 차단하기문제 발견해외 TNA 서비스내 DataDog 모니터링에서 /analytics 엔드포인트에 대한 500에러가 지속적으로 발생하고 있었습니다. 문제는 POST 메서드만 허용하는 엔드포인트에 GET 요청이 빈번하게 들어오고 있다는 점입니다.원인 파악애플리케이션 관점에서는 정상적인 사용자 flow에서는 절대 발생하지 않는 요청이었기에 크롤러에 의한 비정상 트래픽으로 짐작하고 DataDog내 User-Agent를 확인한 결과 Microsoft Bing의 검색 크롤러 봇이 원인이었습니다.xxx.xxx.xx.xxx - - [12/Dec/2025:07:24:52 +0000] "GET /analytics HTTP/1.1" 500 90 "-" "Mozilla/5.0 .. 2025. 12. 16.
[Trouble Shooting] React Query의 QueryClient를 공통모듈에서 싱글톤으로 관리하기 📍 React Query의 QueryClient를 공통모듈에서 싱글톤으로 관리하기배경해외 TNA NOL 내재화를 마치고 NOL 도메인내에서도 리뷰를 작성할 수 있도록 공통모듈에 리뷰패키지를 추가하는 작업 때 마주한 고민이다. 리뷰는 PDP(상품 상세 페이지)에서 리뷰 조회, 신고가 가능하고 (내가 작성한 리뷰의 경우) 수정/삭제가 가능하며 예약 목록/상세 페이지에서 작성 및 수정이 가능한 구조이다.문제 상황예약 상세 페이지에서 리뷰를 작성하거나 수정한 후 PDP로 돌아가면, 추가/수정된 내용이 반영되지 않고 이전 데이터가 그대로 노출되는 문제가 발생했습니다. 원인 분석:각 버티컬(PDP, 예약 등)이 독립적인 QueryClient 인스턴스를 생성하고 있었습니다.예약 페이지에서 queryClient.in.. 2025. 12. 3.