Npm uyum sorunu
Running "npm install" in /home/expo/workingdir/build directory
npm
ERR! code ERESOLVE
npm
ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: [email protected]
npm ERR! Found: [email protected]
npm ERR! node_modules/graphql
npm ERR! graphql@"^15.8.0" from the root project
npm ERR!
peer graphql@"^15.0.0 || ^16.0.0" from @apollo/[email protected]
npm ERR! node_modules/@apollo/client
npm ERR! @apollo/client@"^3.9.6" from the root project
npm ERR! 13 more (@expo/cli, @graphql-typed-document-node/core, ...)
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer graphql@"^14.3.1" from [email protected]
npm ERR! node_modules/react-apollo
npm ERR! react-apollo@"^3.1.5" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: [email protected]
npm ERR! node_modules/graphql
npm ERR! peer graphql@"^14.3.1" from [email protected]
npm ERR! node_modules/react-apollo
npm ERR! react-apollo@"^3.1.5" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR!
npm ERR! For a full report see:
npm ERR! /home/expo/.npm/_logs/2024-05-01T06_37_32_532Z-eresolve-report.txt
npm ERR! A complete log of this run can be found in: /home/expo/.npm/_logs/2024-05-01T06_37_32_532Z-debug-0.log
npm install exited with non-zero code: 1
bunun için napmalıyım npm install --force yaptım fakat yok
"@apollo/[email protected]" paketi "graphql@^16.8.1" sürümünü istiyor,
"@apollo/[email protected]" paketi "graphql@^14.3.1" sürümünü istiyor.
"@apollo/[email protected]" paketi "react@^18.2.0" sürümünü istiyor,
"@apollo/[email protected]" paketi "react@^16.8.0" sürümünü istiyor.
"[email protected]" paketi "graphql@^16.8.1" sürümünü istiyor,
"@urql/[email protected]" paketi "graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" sürümlerini istiyor.
Bu işi böyle çözemeyeceğiz diye düşünerek projenin repository'sini internette aradım.
Projenin Github sayfasına girince şu uyarıyı gördüm: THIS PROJECT HAS BEEN DEPRECATED
Bu yüzden güncel paketlerle uyum sorunları oluşuyor olabilir.
Proje sonlandırılıp yerine yenisi getirilmiş ve eski paketler yerine şu paketlerin yenileriyle değiştirilmesi önerilmiş:
old: @apollo/react-components --> new: @apollo/client/react/components
old: @apollo/react-hoc --> new: @apollo/client/react/hoc
old: @apollo/react-ssr --> new: @apollo/client/react/ssr
old: @apollo/react-testing --> new: @apollo/client/testing
old: @apollo/react-hooks --> new: @apollo/client
Bu geçişi en düzgün şekilde (projeye en az zarar verecek şekilde) yapabilmek için de yönergeler eklenmiş: https://www.apollographql.com/docs/react/migrating/apollo-client-3-migration/
Bunu uzun uzun inceyemedim. Yapay zekanın sayfayı özetlemesini istedim.
Verdiği çıktıyı direkt aşağıya yapıştırıyorum ama yine de link üzerinden gitmen daha sağlıklı olur.
Apollo Client 3.0'e geçiş yapmak için aşağıdaki adımları izleyebilirsin:
1) Paketleri Yükleme: Yeni paketleri yüklemek için aşağıdaki komutu çalıştır:
npm install @apollo/client
2) Paketleri Kaldırma: Daha önce "apollo-client", "apollo-boost" veya "react-apollo" paketlerini kullandıysan, bunları projenden kaldır:
npm uninstall apollo-client apollo-boost react-apollo
3) İçe Aktarmaları Güncelle: Kodundaki tüm "apollo-client" ve "apollo-boost" içe aktarmalarını "@apollo/client" ile değiştir. Örneğin:
import { useQuery, useMutation } from '@apollo/client';
4) Sunucu Tarafı İşleme (SSR): SSR işlevlerini kullanıyorsan, bunları yeni konumlarından içe aktar:
import { getDataFromTree } from '@apollo/client/react/ssr';
5) Test Etme: Test bileşenlerini kullanıyorsan, bunları yeni konumlarından içe aktar:
import { MockedProvider } from '@apollo/client/testing';
6) Bağlantılar: Bağlantılar artık "@apollo/client" paketinin bir parçasıdır. Bağlantıları içe aktarmak için daha spesifik olman gerekebilir:
import { createHttpLink } from '@apollo/client';
import { createPersistedQueryLink } from '@apollo/client/link/persisted-queries';
7) Otomatik Dönüştürme: Kod tabanın büyükse, Apollo'nun sağladığı otomatik dönüştürme aracını kullanabilirsin:
1- Apollo Client deposunu kopyala:
git clone https://github.com/apollographql/apollo-client.git
2- JSCodeshift aracını kullanarak içe aktarmaları dönüştür:
npx jscodeshift -t apollo-client/codemods/ac2-to-ac3/imports.js --extensions js source-directory
Burada "source-directory", dönüştürmek istediğin dosyaları içeren klasörün yoludur.
8) Diğer Paketler: Diğer paketleri (örneğin "apollo-link", "apollo-cache-inmemory") kullanıyorsan, bunları "@apollo/client" paketine taşıman gerekebilir.
Daha fazla bilgi için Apollo Client belgelerine bakabilirsin.