Npm uyum sorunu
bunun için napmalıyım npm install --force yaptım fakat yok
"@apollo/react-common@3.1.4" paketi "graphql@^16.8.1" sürümünü istiyor,
"@apollo/react-components@3.1.5" paketi "graphql@^14.3.1" sürümünü istiyor.
"@apollo/react-components@3.1.5" paketi "react@^18.2.0" sürümünü istiyor,
"@apollo/react-hoc@3.1.5" paketi "react@^16.8.0" sürümünü istiyor.
"apollo-boost@0.4.9" paketi "graphql@^16.8.1" sürümünü istiyor,
"@urql/exchange-retry@0.3.0" 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.