-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FE] [email protected]
를 [email protected]
으로 마이그레이션
#979
Conversation
- msw의 최신 버전과 msw-storybook-addon의 구버전의 peer dependencies가 일치하지 않아 msw-storybook-addon도 업데이트를 진행
- msw의 `2`버전과 msw-storybook-addon의 구버전의 peer dependencies가 일치하지 않아 msw-storybook-addon도 업데이트를 진행 - msw를 최신 버전으로 업데이트 하지 않는 이유는 `2.1.7` 보다 높은 버전에서 "Cannot read properties of undefined (reading 'url')" 가 발생하기 때문
- 간헐적인 에러가 발생하는 것을 방지
- `v1`과 달리 `v2`는 `response.json()`이 `any`로 추론되지 않으며, 이로 인해 타입 에러가 발생함 - 따라서 제네릭을 이용해 body의 타입을 지정
- 제시되었던 오류가 해결된 것으로 확인
[email protected]
를 [email protected]
로 마이그레이션[email protected]
를 [email protected]
으로 마이그레이션
현재 아래의 문제가 발생하고 있어. 이 에러는 브라우저에 팀바팀 탭을 2개 이상 띄울 경우 그 이후부터 매 새로고침마다 에러가 발생해 에러 자체는 로직에 큰 영향을 주지 않는 것으로 보이고, 이에 따라 이 창을 닫고 계속 디버깅을 진행한다면 모킹은 여전히 가능한 것으로 보여, 하지만 많이 거슬리는 것이 사실이고 완성도도 떨어져 보일 것 같아 안타깝게도 이 에러는 이슈만 있을 뿐, 공인된 해결 방법이 나오지 않은 것 같아.
일단 지금 작업 시점은 상기의 에러가 발생하는 상황이야 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아이고 작업량 많은거 봐 고생했슈!! 에러 관련한건 뭐 msw쪽에서도 지속적으로 업데이트 해둘거니까 상황 지켜보다가 한번 더 업그레이드 하자! 어차피 메인 버전이 바뀌는거 아니면 기존 사용하던 문법이 잘못될일도 없으니까. 수고많았어!!! 나도 1월1일부터 빠르게 작업해볼게..ㅠㅠ
[FE]
[email protected]
를[email protected]
로 마이그레이션이슈번호
PR 내용
본 PR에서는
[email protected]
를[email protected]
로 마이그레이션하였으며, 마이그레이션을 위해 필요한 작업들을 같이 수행하였다.참고자료
작업한 과정을, 크게 네 가지로 나누어서 설명해 볼게.
1️⃣ 라이브러리 설치 및 서비스워커 파일 생성
[email protected]
을[email protected]
로 업데이트했고,msw-storybook-addon
을 Breaking Changes가 있는2
버전으로 업데이트했어.mockServiceWorker.js
파일을 생성했어.Q.
msw-storybook-addon
은 왜 업데이트했는지?A.
[email protected]
와peerDependencies
충돌이 있었어. 그래서msw-storybook-addon
도2
버전으로 업그레이드했어.2️⃣ 지금까지의 모킹 로직들을 마이그레이션
친절하게도 마이그레이션 가이드가 있었어! 다만 우리는 msw의 모든 기능을 사용하고 있던 것은 아니니, 실제로 사용한 부분만 공유해 줄게.
msw
가 아닌msw/broswer
에서 import해, 그리고 우리가 매번 쓰던rest
객체는 이제http
객체로 바꿔야 해. 매번 단골마냥 쓰던(req, res, ctx)
는 이제 쓰이지 않아. 이제 하나의 객체에서 프로퍼티를 빼내는 방식을 써.searchParams
의 사용법 변경body
를 처리하는 방법 변경request.json
을 써야 해.params
의 사용법 변경응답에는 이제
res
대신HttpResponse
객체를 사용해. 여러 방법이 있는데 나는json
데이터를 응답하는 방법과 아닌 방법으로 나누어 마이그레이션 했어.json
데이터로 응답해야 하는 경우 --HttpResponse
의 static 메서드인HttpResponse.json()
를 사용했어. static 메서드니new
는 붙이지 않아. 아래는 사용 예시야.json
데이터로 응답하지 않는 경우 --HttpResponse
를new
키워드를 이용해 생성하고, 그 생성한 객체를 그대로 쓰면 돼ctx.delay()
는 사용하지 않아. 이제delay
를 직접msw
에서 import하고 그대로 사용하면 돼.3️⃣
index.tsx
를 수정해setupWorker
가 렌더링 전 실행하도록 변경이 작업을 수행해 주지 않았을 때 간헐적인 에러가 발생하면서 전반적인 모킹 프로세스가 제대로 동작하지 않는 문제가 있었어. 이 부분은 구글링을 해서 적절한 코드로 바꿨어.
4️⃣
response.json()
사용 후 반환된 객체에 대한 타입 에러 해결1버전에서는
res.json()
의 반환값이any
로 추론되어 에러 없이 로직을 구현할 수 있었어.2버전에서는 그게 안 돼.
DefaultBodyType
으로 추론돼.따라서 이 문제를 해결해야 하는데,
http
객체에는 제네릭을 사용할 수 있어서, 제네릭을 이용하면response.json()
의 타입을 narrow시킬 수 있어.response.json()
에 해당하는 타입은 두 번째 제네릭 파라미터로 오는지라, 이 경우params
에 대응하는 첫 번째 파라미터를 사용해야 했는데,param
을 사용하는 경우에는 사용처가 많지 않아 타입을 하드코딩했고, 사용되지 않는 경우never
타입으로 지정해줬어.설명은 여기까지야. 최대한 같이 따라가려고 자세히 적어보았고, 이해 안 되는 거 있으면 적어줘~ 화이팅!