Invariant Violation : [MSW] Fail to execute 'setupWorker' in a non-browser envionment. Consider using 'setupServer' for Node.js environment instead. 및 404 이슈 트러블 슈팅 #54
jinyoung234
started this conversation in
00. Trouble Shooting
Replies: 3 comments 2 replies
-
useEffect를 그래서 추가하셨군요. 다만 이 부분 때문에 코드의 가독성이 떨어지네요 ㅜ |
Beta Was this translation helpful? Give feedback.
1 reply
-
정확한 출처는 여기인것 같습니다! |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Trouble Shooting
mocks 폴더 내 handlers, worker, server를 세팅한 후 node 환경과 browser 환경을 구분 하기 위해 다음과 같은 코드를 구성했었다.
Issue Tracking
mocks/index.ts
위에 있는 export server, browser 파일과 initMocks의 await import랑 겹쳐 발생하는 문제였다.
다음과 같이 변경했다.
_app.tsx
_app.tsx는 다음과 같이 코드를 구성했다.
하지만 404 에러가 발생하였고 여기서 엄청난 삽질이 시작되었다. msw/msw.js 깃헙 issue와 yarn berry 깃헙 issue를 모조리 뒤졌고 다음과 같은 이슈를 찾을 수 있었다.
_app.tsx
이슈에 나와 있는 대로 useEffect와 shouldRender 상태를 이용해 문제를 해결하려 시도해보았다.
더 이상 404 에러가 발생하지 않는 것을 확인할 수 있었다.
useInitMocks.ts
_app.tsx의 코드 가독성을 위해 custom hook으로 분리하여 추상화 하였다.
_app.tsx의 길이가 줄어드는 것을 확인할 수 있었다.
로컬 환경에서 테스트를 진행하기 위해 다음과 같은 test 핸들러를 만들었다.
index.tsx
test api를 만든 후 useEffect를 통해 데이터를 가져오려 했다.
하지만 404 에러가 발생해서 커스텀 훅으로 현재 분리하진 못한 상태이다.
또한 전체적인 정확한 원인 파악이 어려운 상태이고, 구체적으로 어떻게 해결되었는지 원리를 이해하기가 어려워 시간날 때 글이 업데이트 될 거 같다.
추가 레퍼런스
msw discussion 1049에 대한 msw 메인테이너님의 답변
next.js discusstion 39695
Beta Was this translation helpful? Give feedback.
All reactions