토이 플젝을 진행하면서 vercel로 항상 배포하는 상황에서,
react-router-dom v6
Route path="/*" 를 모두 Home 페이지로 설정했는데도 불구하고 계속 404에러를 뱉는 현상이 나타났다. local에서는 새로고침을 해도 에러가 없는 것을 보면 vercel 배포 후 문제인 것으로 확인되었다.
Home
을 /
루트로, detail
을 /detail
로 나누고, 그 외 다르게 입력되는 모든 주소의 접근은 /*
로 처리해주었다.
const App: React.FC = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/detail" element={<Detail />} />
<Route path="/*" element={<Home />} />
</Routes>
</BrowserRouter>
);
};
export default App;
페이지 컴포넌트 export, 폴더 내부 import 경로까지 확인
에러 페이지를 따로 만들었음에도 불구하고 화면에 똑같은 404 에러페이지가 출력되었다.
404 에러페이지 하단에 있는 버튼을 클릭하면 해당 에러와 관련된 가이드 페이지를 확인할 수 있다.
해당 페이지에서는 project > setting > advansed
부분의 Directory Listing 토글을 Enabled로 전환시켜주면 404 Not fount 에러에 대응 할 수 있다고 쓰여있다.
하지만 이 방법도 실패!!!!!!
https://stackoverflow.com/questions/64815012/why-does-react-router-not-works-at-vercel
결국 구글링을 통해 알아낸 방법, vercel.json
파일을 최상단에 추가해주고 그 파일 내부에 해당 코드를 적어준 후 배포해준다.
{
"rewrites": [
{"source": "/(.*)", "destination": "/"}
]
}
짜잔~~
해결!!!
thk !