만족
[React] Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>. 본문
[React] Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.
FrontEnd/React Satisfaction 2022. 4. 22. 19:00Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.
갑자기 <Route> 를 <Routes>로 감싸라는 오류가 출력됐다.
그런데 Mac환경에서는 정상 작동하다가 플랫폼을 옮기니 이 오류가 발생해서 의아했다.
원인과 해결
react-router 6버전부터 <Routes>로 <Route>를 감싸는게 강제되었기 때문이다
return (<div>
<Route exact path='/' render={<p>hi</p>}/>
<Route exact path='/test' render={<p>hi test</p>}/>
</div>)
버전 5까지는 위처럼 작성할 수 있었지만 버전 6부터는 아래처럼 작성해줘야 한다
return (<div>
<Routes>
<Route exact path='/' render={<p>hi</p>}/>
<Route exact path='/test' render={<p>hi test</p>}/>
</Routes>
</div>)
Mac에서는 됐던 이유?
package.json에 react-router의 버전이 latest로 되어있었기 때문이다.
과거 5버전이 최신 버전일때 설치하고 package.lock에 5.2.1 버전으로 박혀있었기 때문에 Mac에서는 문제가 없었지만
새로 워크스페이스로 사용중인 우분투와 윈도우에서는 latest, 즉 6버전을 사용한 것이 문제다.
따라서 latest를 ^5.2.1로 변경해주고,
yarn.lock, package-lock.json, node_modules 를 전부 삭제한 후 다시 모듈을 설치했다.
(^는 명시한 버전보다 높은 버전 중 호환되는 버전+ 첫 자리(5) 버전은 바뀌지 않음)
'FrontEnd > React' 카테고리의 다른 글
[React] react-simple-wysiwyg 빌드 오류 (0) | 2022.09.12 |
---|---|
[React] redux에서 swr로 옮긴 썰 (2) | 2022.09.10 |
[React] github action을 이용한 자동 배포 환경 구성 (0) | 2022.04.21 |
[React] webpack-bundle-analyzer를 이용한 번들 사이즈 최적화 (2) | 2022.04.17 |
[React] 당신에게 class-validator 는 정말 필요한가 (0) | 2022.04.17 |
Comments