React v19での依存関係エラーの解決法
主な問題
npx create-react-app
実行時に以下のエラーが発生:
npm
npm error ERESOLVE unable to resolve dependency tree
npm error Found: react@19.0.0
npm error Could not resolve dependency:
npm error peer react@"^18.0.0" from @testing-library/react@13.4.0
原因はReact v19のリリースと、未対応のテストライブラリ間の依存関係競合です
問題の詳細解説
Reactがバージョン19にアップデートされたにも関わらず、@testing-library/react
などの関連パッケージがまだv18を要求しているため発生する依存関係の競合です。
典型的な症状:
- React v19とテストライブラリ(v13.4.0)の互換性エラー
peer react@"^18.0.0"
エラーメッセージの表示--force
や--legacy-peer-deps
を使わないとインストールが失敗- MongoDBなどの他の依存パッケージに悪影響
効果的な解決策
⚡ 推奨ソリューション: Viteを使用した新規プロジェクト作成
bash
npm create vite@latest
プロジェクト作成時に以下の選択:
- プロジェクト名を入力
- フレームワークに
React
を選択 - バリアントに
TypeScript
またはJavaScript
を選択
create-react-appの非推奨化
公式ドキュメントでもViteへの移行が推奨されています。create-react-appは現在メンテナンスモードです
補足:テストライブラリのインストール
プロジェクト作成後、必要なテストライブラリを別途インストール:
bash
npm install -D @testing-library/react @testing-library/jest-dom @testing-library/user-event
⚠ 一時的な回避策(非推奨)
create-react-appを使用しなければならない場合:
bash
npx create-react-app appname --legacy-peer-deps
ただしこの方法には以下の制限があります:
- 非互換な依存関係による将来のバグリスク
- React最新機能の利用不可
- ビルドサイズやパフォーマンスの劣化
解決策の技術背景
依存関係競合の仕組み
Vite採用のメリット
- 依存関係の最新化 - create-react-appより依存パッケージが少ない
- パフォーマンス向上 - 開発サーバーの起動が10倍以上速い
- 将来性 - React公式が推奨するビルドツール
- 柔軟な設定 - 必要に応じて拡張可能
予防対策
バージョン競合を防ぐ習慣:
npx npm-check-updates -u
で依存パッケージの最新化- Reactプロジェクトのドキュメントでバージョン互換性を確認
- メジャーバージョン更新時にリリースノートをチェック
新しいツールチェインに移行することで、最新のReact機能を問題なく利用でき、依存関係のトラブルから解放されます。Viteは2024年現在、React開発の標準ツールとなりつつあります。