【Next.js】NextRouter was not mountedとエラーが出て、router.push(“/”)が使えない

この記事は約2分で読めます。
スポンサーリンク

はじめに

router.push(“/”)等で、画面遷移を実装しようとした時、

Unhandled Runtime Error
Error: NextRouter was not mounted.

とエラーが出ていしまいます。

環境

  • next: 14.0.3
スポンサーリンク

解決

Next.js ver13からuseRouterのパッケージが変更されたことが原因。

これまでは、
import { useRouter } from 'next/router'
を使用していましたが、v13より、
import { useRouter } from 'next/navigation';
となりました。

他の記述は、これまで通りです。

import { useRouter } from 'next/navigation';
const App= () => {
 const router = useRouter();
 const click = () => {
    router.push("/")
 }
 return (
  <></>
 )
}
export default App;

おわりに

忘れるとnext/routerを使っています。
きちんと公式のリファレンスを参照しないと、
調べてもChatGPTを使用してもV13以前のことが多く、まともな正解には辿り着きません。

参照文献

Functions: usePathname | Next.js
API Reference for the usePathname hook.
NextRouter was not mounted Next.JS
Using import { useRouter } from "next/router"; as import { useRouter } from "next/navigation"; throws "Argument of type '{ pathname: string; query: { search: st...

コメント

スポンサーリンク
スポンサーリンク
タイトルとURLをコピーしました