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も削除して、改めてビルドすることで解決しました。