문제 발생
Next.js와 TS를 쓰면서 프로젝트를 진행하고 있었다.
axios로 API 요청을 하고 서버에서 내려주는 에러 메시지를 이용해 에러 핸들링을 하려고 했다.
try ~ catch 문을 이용해 error를 잡고, error 객체의 message를 이용하려고 하니 아래와 같은 컴파일 에러가 발생했다.
console.log를 찍어보면 error 객체는 아래처럼 분명 존재한다.
문제 해결
JS를 쓸 때는 타입 체크를 하지 않기 때문에 사용에 문제 없었지만
TS에서는 쓰면 error가 unknown 타입이라 error 객체의 프로퍼티로 바로 접근할 수 없다.
여러 방법이 있겠지만 axios에서 제공하는 isAxiosError라는 내부 메서드를 이용했다.
일종의 조건문으로 타입 좁히기를 하는거라고 생각하면 될것 같다.
아래의 else if문처럼 try ~ catch문 안에서 특정 조건에 따라 특정 에러 객체를 반환하도록 설정하거나
혹은 axios 인스턴스 내에서 인터셉터로 에러를 던지도록 하고 catch문 내에서 분기 처리하면 여러 에러 상황을 핸들링 할 수도 있다.
'프론트엔드 > 트러블 슈팅' 카테고리의 다른 글
여러개의 URL 쿼리 스트링 쓰기 (0) | 2024.03.19 |
---|---|
Next.js에서 페이지 별로 컴포넌트를 관리할 때 문제점 (0) | 2024.03.16 |
Failed to load plugin 'prettier' declared in '.eslintrc.cjs': Cannot find module 'eslint-plugin-prettier' (0) | 2024.01.12 |
'react-scripts'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다. (0) | 2023.12.29 |
자식 컴포넌트에서 부모 컴포넌트의 비동기 데이터 사용 시 렌더링 할 수 없는 현상 (0) | 2023.12.28 |