- Konu sahibi
- #1
npm paketinin yüklenmesi, TypeScript’in o pakete ait tür bildirimlerini mutlaka bulacağı anlamına gelmez. Paket bildirim içermeyebilir, ayrı bir
Terminali hatayı veren uygulamanın
İlk komutta paket görünmüyorsa doğru çalışma alanında olup olmadığınızı kontrol edin ve gerekirse o uygulamaya
Paketin belgelerine ve kurulu paketindeki
Paket kendi türlerini sağlamıyorsa, uygun bir topluluk bildirimi olup olmadığını ve sürüm uyumunu kontrol edin. Örneğin varsayımsal
Bu komut JavaScript paketinin yerine geçmez; bildirimleri geliştirme bağımlılığı olarak ekler. Kapsamlı paketlerde adlandırma farklı olabilir: örneğin
Aynı belirti farklı nedenlere işaret edebilir:
Tablodaki mesajlar başlangıç noktasıdır; kesin nedeni görmek için derleyiciyi uygulamanın kullandığı yapılandırmayla çalıştırın. Örnekte
İlk komut devralınanlar dâhil etkin ayarları gösterir. İkinci komut dosya üretmeden tür denetimi yapar ve modülün hangi yollarda arandığını gösterir. Çıktıda paket adını arayın: Aranan bildirim dosyası yoksa kurulum ve paket içeriğine; dosya bulunmasına rağmen hata sürüyorsa bildirimin uyumluluğuna ve hata mesajının ayrıntısına dönün. Çözümleme izinde yerel dosya yolları bulunabilir; paylaşmadan önce kullanıcı adlarını ve proje yollarındaki hassas bilgileri temizleyin. Tanılama çıktısını dosyaya kaydettiyseniz işiniz bitince silin.
Paketin
Değişiklikleri kaydedip aynı
Sorun sürüyorsa tam hata mesajını, import satırını, paket ve TypeScript sürümlerini, ilgili
@types paketi gerektirebilir veya bildirimler projenin modül çözümleme ayarlarıyla bulunamıyor olabilir. Önce paketin doğru projede kurulu olduğunu ve bildirimin nerede sağlandığını kontrol edin; ardından kullanılan TypeScript yapılandırmasını ve çözümleme izini inceleyin.Paketi ve tür bildirimini ayrı ayrı kontrol edin
Terminali hatayı veren uygulamanın
package.json dosyasının bulunduğu dizinde açın. Aşağıdaki örnekte paket-adi yerine import satırındaki gerçek paket adını yazın:
Kod:
npm ls paket-adi
npx tsc --version
İlk komutta paket görünmüyorsa doğru çalışma alanında olup olmadığınızı kontrol edin ve gerekirse o uygulamaya
npm install paket-adi ile yükleyin. Çoklu çalışma alanlarında paketin başka bir uygulamada kurulu olması, hatayı veren uygulamanın bağımlılığı olduğu anlamına gelmez. Paket görünüyorsa bu, türlerinin de erişilebilir olduğunu henüz kanıtlamaz.Paketin belgelerine ve kurulu paketindeki
package.json dosyasına bakın. types veya typings alanı bir bildirim dosyasını gösterebilir; modern paketlerde exports içindeki tür koşulları da kullanılıyor olabilir. Bu alanların yokluğu tek başına tür bulunmadığını kanıtlamaz: TypeScript başka uygun bildirim dosyalarını da arayabilir.Paket kendi türlerini sağlamıyorsa, uygun bir topluluk bildirimi olup olmadığını ve sürüm uyumunu kontrol edin. Örneğin varsayımsal
ornek-paket için gerçekten yayımlanmış ve kullandığınız sürüme uygun @types/ornek-paket varsa uygulama dizininde şunu çalıştırın:
Kod:
npm install -D @types/ornek-paket
Bu komut JavaScript paketinin yerine geçmez; bildirimleri geliştirme bağımlılığı olarak ekler. Kapsamlı paketlerde adlandırma farklı olabilir: örneğin
@kurum/arac için bildirimin adı @types/kurum__arac biçiminde olabilir. Her paket için böyle bir bildirimin bulunduğunu varsaymayın.Hata mesajına göre çözümlemeyi inceleyin
Aynı belirti farklı nedenlere işaret edebilir:
| Görülen durum | İlk kontrol |
|---|---|
| Modül veya ilgili tür bildirimleri bulunamıyor | Paket adı, kurulum yeri ve import yolu |
| Modül bulunuyor, bildirim dosyası bulunamıyor | Paketin kendi türleri veya uygun @types paketi |
| Paketin belirli bir alt yolu bulunamıyor | Paketin exports alanı ve desteklenen import yolları |
| Bildirim dosyasında sözdizimi veya uyumluluk hatası | TypeScript ve paket sürümlerinin uyumu |
tsconfig.json yerine gerekirse ilgili uygulamanın yapılandırma yolunu yazın:
Kod:
npx tsc -p tsconfig.json --showConfig
npx tsc -p tsconfig.json --noEmit --traceResolution
İlk komut devralınanlar dâhil etkin ayarları gösterir. İkinci komut dosya üretmeden tür denetimi yapar ve modülün hangi yollarda arandığını gösterir. Çıktıda paket adını arayın: Aranan bildirim dosyası yoksa kurulum ve paket içeriğine; dosya bulunmasına rağmen hata sürüyorsa bildirimin uyumluluğuna ve hata mesajının ayrıntısına dönün. Çözümleme izinde yerel dosya yolları bulunabilir; paylaşmadan önce kullanıcı adlarını ve proje yollarındaki hassas bilgileri temizleyin. Tanılama çıktısını dosyaya kaydettiyseniz işiniz bitince silin.
TypeScript ayarlarını çalışma ortamıyla eşleştirin
moduleResolution, TypeScript’in import edilen modülleri nasıl arayacağını belirler. Modern Node.js için nodenext gibi Node uyumlu bir mod; kodu bir paketleyici işliyorsa bundler uygun olabilir. module ayarı da seçilen modla uyumlu olmalıdır. Örneğin Node.js hedefleyen bir projede module: nodenext, paketleyici kullanan bir projede ise module: esnext ile moduleResolution: bundler bir başlangıç seçeneğidir. Mevcut ayarı yalnızca hatayı susturmak için değiştirmeyin: çalışma zamanı, modül biçimi ve diğer importlar da etkilenebilir.Paketin
exports alanı varsa, iç dosyaya ait bir yol diskte bulunsa bile dışarıya açılmamış olabilir. Bu durumda paket belgelerinde desteklenen kök veya alt yol importunu kullanın; dosyaya doğrudan erişmeye çalışmak kalıcı bir çözüm değildir.types ve typeRoots ayarları özellikle otomatik eklenen genel türleri etkileyebilir. Örneğin Node.js genel türleri eksikse @types/node kurulumunu ve etkin types listesini kontrol edin. Özel typeRoots kullanıyorsanız gerekli tür klasörünün bu ayarda yer aldığından emin olun. types listesinden bir paketin çıkarılması, açık bir import üzerinden çözümlenen türleri her durumda engellemez.Düzeltmeyi doğrulayın
Değişiklikleri kaydedip aynı
npx tsc -p tsconfig.json --noEmit komutunu yeniden çalıştırın. İlgili hata kaybolduysa tür bildirimi artık derleyici tarafından kullanılabiliyor demektir; bu tek başına paketin çalışma zamanında doğru çalıştığını garanti etmez. Komut başarılı ama editör hâlâ hata gösteriyorsa editörün aynı projeyi ve TypeScript sürümünü kullandığını kontrol edip TypeScript dil hizmetini yeniden başlatın.Sorun sürüyorsa tam hata mesajını, import satırını, paket ve TypeScript sürümlerini, ilgili
tsconfig ayarlarını ve temizlenmiş çözümleme izini birlikte inceleyin. Paket kendi bildirimini hatalı yayımlıyorsa bu bilgilerle paket bakımcısına, kullanılan import yolu için bildirimlerin düzeltilmesini isteyebilirsiniz.Sık sorulan sorular
Hiç tür bildirimi yoksa ne yapabilirim?
Paketin kullandığınız API’si için projede bir
.d.ts bildirim dosyası yazabilirsiniz. Örneğin yalnızca declare module 'ornek-paket'; yazmak hatayı geçici olarak bastırabilir, ancak modülü any olarak ele alır ve tür güvenliği sağlamaz. Daha güvenli çözüm, kullandığınız dışa aktarımların gerçek imzalarını tanımlamaktır.