Conversation
- 에러 상수를 에러 타입 기반의 단층 구조로 변환하여 조회 효율 개선을 개선하기 위해 도입
- ApiError 클래스 개편에 따른 인터셉터 응답 로직 수정 - AxiosError 객체 기반의 자동 파싱 적용 - isAxiosError 가드를 추가하여 네트워크 외적 에러(JS 런타임 에러) 발생 시 Sentry 기록 및 원본 에러 전파
- mutation 내 toast 삭제하고 UI 처리는 컴포넌트에서 하도록 개선 - 개선한 ApiError 사용하여 리팩터링 - 상세 에러 정보가 토스트에 나타날 수 있도록 함
|
@github-actions |
|
미리보기 배포 완료 배포 URL: https://team1-fe-wtyr-dork3nyi0-kimhyemins-projects.vercel.app |
오잉 해결됐습니다 일시적인 오류였나봐여 |
hyemomo
left a comment
There was a problem hiding this comment.
다연님! 실사용자 확보에 앞서 구체적인 에러 메시지를 제시해주는 건 확실히 필요할 것 같습니다. 구조는 저도 좀 익히면서 사용해봐야할 것 같네요! 수고하셨습니다!! 승인할게요!
| import { ERROR_MAP } from '@/shared/error/constants/error.constants'; | ||
| import type { ApiError } from '@/shared/error/types/apiError.types'; | ||
| import type { ErrorType } from '@/shared/error/types/error.types'; | ||
|
|
||
| export const getErrorMessage = (error: ApiError) => { | ||
| const mapped = | ||
| error.type && error.type in ERROR_MAP ? ERROR_MAP[error.type as ErrorType] : undefined; | ||
|
|
||
| if (mapped) return mapped.detail; | ||
|
|
||
| if (error.errors?.length) return error.errors[0].message; | ||
|
|
||
| return error.detail ?? '요청에 실패했습니다.'; | ||
| }; |
There was a problem hiding this comment.
오 여기서 메시지를 MAP에서 가져오거나 서버에서 내려두는 에러메시지를 사용하는 것이군요!👏🏻좋은 구조인 것 같아요!!! 감사합니당
| clearAuth(); | ||
| return Promise.reject(new ApiError('UNAUTHORIZED', 401)); | ||
|
|
||
| if (isAxiosError(error)) return Promise.reject(new ApiError(error)); | ||
|
|
There was a problem hiding this comment.
message와 status를 받아서 하는 것보다 에러를 그대로 받아서 내부에서 처리하는 게 확실히 역할도 분명해지겠네요! 👍🏻👍🏻
| { | ||
| path: '/', | ||
| element: <AppLayout />, | ||
| element: <RootLayout />, | ||
| errorElement: <RootFallback />, | ||
| children: PROTECTED_ROUTES.map((route) => ({ | ||
| ...route, | ||
| element: withProtected(route.element), | ||
| })), | ||
| children: [ | ||
| ...PUBLIC_ROUTES, | ||
|
|
PR
🔍 한 줄 요약
✨ 작업 내용
1. ModalRenderer 위치 수정했습니다.
2. 에러 구조 개선
ApiError 고도화
ERROR_MAP 도입
에러 메세지 유틸 함수 구현
3. 개선된 에러 구조와 처리 로직 일부 반영
axiosInstance
각종 기능
4. 에러 관련된 모든 것을 shared > error 로 이동
세부 상황 처리된 토스트 예시
❗ 참고 사항
#️⃣ 연관 이슈