`NextRouter` was not mounted
Why This Error Occurred
A component used useRouter
outside a Next.js application, or was rendered outside a Next.js application. This can happen when doing unit testing on components that use the useRouter
hook as they are not configured with Next.js' contexts.
This can also happen when you try to use the useRouter
hook from next/router
inside the app
directory, as the App Router's useRouter
from next/navigation
has different behavior to the useRouter
hook in pages
.
Possible Ways to Fix It
If used in a test, mock out the router by mocking the next/router
's useRouter()
hook.
If used in the app
directory, migrate to the new hooks imported from next/navigation
.
If used in the pages
directory, try to update the export to next/compat/router
. This is the same useRouter
hook but does not throw this error, intended to be used while migrating from pages
to app
.
Useful Links
Was this helpful?