Salvo

WFN Üye
Konular
1,759
Mesajlar
1,781
Çözüm
0
Ticaret Puanı
0
Üyelik
6 Ay 17 Gün
Konum
İstanbul
Web Sitesi
Yok
Alanı
Belirtmemiş
1/1
Konu sahibi
TypeScript’te “Cannot find module” hatasını çözmek için önce hata mesajındaki modül adının bir dosya yolu mu, yoksa paket adı mı olduğunu belirleyin. Dosya yolunu ve harflerin büyüklüğünü doğrulayın; paket kullanıyorsanız doğru projede kurulu olduğunu ve tür bildirimlerinin erişilebilirliğini kontrol edin. Ardından projenin modül çözümleme ayarını çalıştırma ortamıyla eşleştirip derlemeyi yeniden çalıştırın.

Önce hatalı içe aktarmayı bulun​


Hata mesajındaki modül adını ve import satırını not edin. ./ veya ../ ile başlayan adlar içe aktaran dosyaya göre hesaplanan yerel yollardır; lodash gibi adlar ise genellikle paketleri gösterir. @/ gibi özel bir önek kullanılıyorsa yol takma adını da kontrol etmek gerekir.

Örneğin src/app.ts içinden src/utils/math.ts dosyası kullanılıyorsa, aşağıdaki içe aktarma paket değil, yerel dosya arar:

Kod:
import { add } from "./utils/math";

Dosyanın gerçekten belirtilen yerde olduğunu ve utils, math gibi adların büyük/küçük harflerinin birebir eşleştiğini doğrulayın. Dosya başka bir dizindeyse yolu, app.ts dosyasının bulunduğu dizini başlangıç alarak düzeltin. Bu örnekte dosyanın ayrıca add adında bir dışa aktarımı olmalıdır; dosya bulunsa bile dışa aktarım yanlışsa farklı bir hata alırsınız.

Paket ve tür bildirimlerini kontrol edin​


Paket adını hatadaki yazımıyla projenin package.json dosyasında arayın. Bağımlılık dosyada varsa önce projenin kullandığı paket yöneticisiyle bağımlılıkları kurun. Örneğin npm kullanan bir projede, terminali ilgili projenin dizininde açıp npm install çalıştırın. Bir çalışma alanında hangi paketin bağımlılığa ihtiyacı olduğunu da kontrol edin.

Paket eksikse ve gerçekten o projede kullanılacaksa, npm kullanan bir projede şu komutla ekleyebilirsiniz:

Kod:
npm install lodash

Bu komut yalnız örnekteki lodash paketini kurar; kendi hatanızdaki paket adını ve projenizin paket yöneticisini kullanın. Kurulumdan sonra aynı derleme komutunu yeniden çalıştırın. Paket bulunmasına rağmen tür bildirimi hatası sürüyorsa paketin kendi TypeScript bildirimlerini içerip içermediğini inceleyin. Gerekliyse ve pakete uygun ayrı bir bildirim paketi varsa onu da kurun; örneğin:

Kod:
npm install -D @types/lodash

Tür paketi, asıl çalışma zamanı paketinin yerine geçmez. Her paket için ayrıca @types kurulması gerekmez; bazı paketler türlerini kendileri sağlar. Paket kurulu olduğu hâlde yalnız belirli bir alt yol bulunamıyorsa paketin belgelerinde ve package.json içindeki exports alanında o yolun dışa açılıp açılmadığını kontrol edin.

Çözümleme ayarını çalışma ortamıyla eşleştirin​


Modül çözümleme, TypeScript’in bir içe aktarmanın hangi dosya veya pakete karşılık geldiğini bulma işlemidir. Projenin kullandığı tsconfig.json dosyasında mevcut compilerOptions ayarlarını, kodun gerçekte nasıl çalıştırıldığına göre değerlendirin:
OrtamKontrol edilecek ayar
Doğrudan modern Node.jsUyumlu Node.js modül ayarları; örneğin module ve moduleResolution için nodenext
Bundler ile derlenen uygulamaBundler yapılandırmasıyla uyumlu module ve moduleResolution: bundler
Örneğin bundler kullanan bir uygulamada module: "esnext" ve moduleResolution: "bundler" birlikte kullanılabilir. Doğrudan Node.js’te çalışan bir projede ise sırf hatayı susturmak için bundler çözümlemesine geçmeyin: TypeScript’in kabul ettiği bir yol, Node.js çalışırken bulunamayabilir. Mevcut yapılandırmayı değiştirmeden önce projenin derleme aracının gereksinimlerini kontrol edin ve değişiklikleri kaydedin.

Node.js’in ES modülü olarak çalıştırdığı kodda göreli içe aktarmalar genellikle çıktı dosyasının uzantısını belirtmelidir. Örneğin TypeScript kaynağı utils/math.ts, normal derlemede utils/math.js üretiyorsa ilgili içe aktarma "./utils/math.js" olabilir. Bu durum her proje için geçerli değildir; dosyanın modül biçimi ve gerçek çıktı yapısı belirleyicidir.

Takma adları ve çözümleme izini inceleyin​


@/utils/math gibi bir takma ad kullanıyorsanız tsconfig.json içindeki paths eşlemesinin doğru dizini gösterdiğini kontrol edin. Ancak paths, üretilen JavaScript’teki içe aktarma yolunu değiştirmez. Dolayısıyla aynı takma adın bundler veya çalıştırma ortamı tarafından da çözümlenmesi gerekir. TypeScript hatasının kaybolması, uygulamanın çalışma sırasında modülü bulacağını tek başına kanıtlamaz.

Sorun sürüyorsa doğru proje dizininde aşağıdaki komutu çalıştırın; gerekirse tsconfig.json yerine ilgili yapılandırmanın yolunu verin:

Kod:
npx tsc --project tsconfig.json --noEmit --traceResolution

Çıktıda hata veren modül adını arayın. Denenen yollar yanlış dizini gösteriyorsa içe aktarmayı veya takma ad eşlemesini düzeltin; paket bulunamıyorsa kurulumun ve kullanılan proje dizininin doğru olduğuna bakın. Paket bulunup bir alt yol çözümlenemiyorsa dışa aktarılan yolları ve çözümleme ayarını inceleyin. --noEmit dosya üretmeden kontrol yapar; başarılı kontrolün ardından uygulamayı kendi normal derleme ve çalıştırma komutlarıyla da deneyin.

Komut satırında hata yok ama editörde devam ediyorsa doğru proje klasörünün açık olduğunu ve editörün aynı TypeScript sürümünü kullandığını kontrol edin; ardından editörün TypeScript hizmetini veya editörü yeniden başlatın. Yardım isterken hata metnini, ilgili import satırını, dosya ağacının gerekli kısmını, TypeScript sürümünü ve ilgili yapılandırma ayarlarını paylaşın. Çözümleme izindeki kullanıcı adları, özel yollar ve diğer hassas bilgileri paylaşmadan önce ayıklayın.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic