Front-end/Next

Error: NextRouter was not mounted 해결하기

개발중인제이 2024. 5. 24. 11:42

 

🚨 에러 발생 

회원가입 완료 페이지에서 로그인하러 가기 버튼을 눌렀을 때 로그인 페이지로 경로 이동을 하기 위해

import { useRouter } from 'next/router';

const router = useRouter();
const handleLoginRedirect = () => { router.push("/login"); };

 

useRouter를 사용했는데 

 

 

NextRouter was not mounted 에러가 발생했다. 

1차적인 해결방법은 "use client"를 최상단에 명시해주는 것이다. 

하지만 나는 이미 Page에 "use client"를 명시해준 상태이기 때문에 따로 적어줄 필요가 없었다. 

 

💡 에러 해결

찾아보니 13버전 이상의 app 라우터에서는 "use client"를 사용해줄 때는  next/router 가 아닌 next/navigation의 useRouter를 사용해줘야 했다. 

 

import { useRouter } from 'next/navigation';

const router = useRouter();
const handleLoginRedirect = () => { router.push("/login"); };

 

이렇게 바꿔주니 에러없이 잘 동작된다.