오늘 갑자기 발생한 새로운 문제! 잘만 되던 expo go, 시뮬레이터에서 웹뷰가 보이지 않는 현상이 발생했다.
증상은 이랬다.
404 에러가 떴음. <WebView
ref={webViewRef}
source={{ uri: currentUrl }}
onHttpError={(e) => console.log(e.nativeEvent)}
// 여기서 찾을 수 있었음.
onScroll={handleWebviewScroll}
style={webviewStyles.webview}
onNavigationStateChange={handleNavigationStateChange}
domStorageEnabled={true}
javaScriptEnabled={true}
cacheEnabled={false}
/>
마음속으로 욕을 하며 한참을 고민하다가 아 이거 너무 시간이 오래걸린다 싶어 팀장님께 도움을 청해보니,
url이 이상한데로 리다이렉션이 걸리는 것 같다고 하셨다.
그래서 코드에 리다이렉션 되는 곳이 있나 싶어서 코드를 쭉 살펴봤는데 없었다. 대체 뭐지 싶어서 유심히 보니,
로컬 환경에서는 리다이렉션이 안걸리고, 프로덕션 환경에서만 리다이렉션이 걸리고 있었다.
나는 멘붕이 왔고, 팀장님 조언을 듣고 배포에 문제가 있었나 찾기 시작했다. 그렇게 찾게된 문제는
Amplify 배포시 리다이렉션 설정을 React 환경에 맞춰서 해줘야 한다는 것이었다.
React App에는 SPA(Single Page App) 자체 라우팅이 있으며 AWS 측에서는 기본 경로를 제외한 다른 모든 경로가 서버 측에 없기 때문에 404를 반환합니다.
amplify에서 index.html로 리다이렉트 설정을 해두면, react router가 라우팅을 처리합니다.
해결책은 간단했다.
💡AWS Amplify > 앱 설정 > 다시 쓰기 및 리디렉션 에서 아래 규칙으로 수정하면 된다.
웹뷰 자체에서 리다이렉션이 걸려 계속 후행 슬래시가 url에 붙고, 이로 인해 흰 화면만 출력되는 것 같았다.
rn..어렵다...