React AdminでUncaught Error: useRoutes() may be used only in the context of a component
結論から言うと、react-router6.4以上のバージョンとreact-adminの組み合わせで発生する模様。
Macを再起動後にpnpm devでreact adminプロジェクトを立ち上げたところ、突如
React AdminでUncaught Error: useRoutes() may be used only in the context of a <Router> component
とのエラーが発生。
react adminのissueで問題が投稿されていた。
6.3.0なら解決とのことで、
pnpm install react-router@6.3.0
と実行するもエラーは消えず。
一度node_modulesを消してインストールし直すも同様のエラー。
改めてエラーを見てみると
invariant
node_modules/.pnpm/@remix-run+router@1.0.4/node_modules/@remix-run/router/dist/router.js (841:0)
useRoutes
node_modules/.pnpm/react-router@6.4.4_react@18.2.0/node_modules/react-router/dist/index.js (481:75)
Routes
node_modules/.pnpm/react-router@6.4.4_react@18.2.0/node_modules/react-router/dist/index.js (1113:0)
なぜか存在しないはずの6.4.4があり、読み込まれている。
mode_modules/.pnpm内を確認すると、react-router@6.4.4と6.3.0の二つがなぜか存在している。
6.4.4の方を.pnpmのディレクトリから削除してpnpm devしてみたところ、エラーは消えた。
だが、他のモジュールを何かしらインストールすると、また6.4.4が復活する。
なぜかと思いみてみたら、pnpm-lock.yaml内のra関連のdependenciesに以下の行が!
react-router: 6.6.1_react@18.2.0
react-router-dom: 6.4.4_biqbaboplfbrettd7655fr4n2y
node_modulesを消して、pnpm-lock.yamlも削除して、改めてビルドすることで解決しました。