Salvo

WFN Üye
Konular
1,743
Mesajlar
1,765
Çözüm
0
Ticaret Puanı
0
Üyelik
6 Ay 16 Gün
Konum
İstanbul
Web Sitesi
Yok
Alanı
Belirtmemiş
1/1
Konu sahibi
İlk olarak import yolunun, dışa aktarılan adın ve TypeScript’in kullandığı tsconfig.json dosyasının aynı projeyi gösterdiğini kontrol edin. Dosyalar gerçekten mevcutsa sorun genellikle yanlış göreli yol, export eksikliği, dosya adı büyük-küçük harf uyuşmazlığı, Node.js ile bundler için yanlış moduleResolution seçimi veya yalnızca TypeScript’in bildiği bir paths kısayolunun çalışma zamanında tanınmamasıdır. Hatanın kaynağını kesinleştirmek için önce import satırını basit bir göreli yola indirin; ardından tsc --traceResolution çıktısında TypeScript’in hangi dosyaları aradığını izleyin.

Import yolu dosyanın konumuna göre hesaplanır​


./ ve ../ içeren bir import, proje köküne göre değil, import satırının bulunduğu dosyaya göre çözülür. Örneğin şu yapı varsayılsın:

Kod:
proje/
├─ src/
│  ├─ app.ts
│  └─ helpers/
│     └─ format.ts

app.ts içinden format.ts dosyasına ulaşmak için doğru yol şöyledir:

Kod:
// src/app.ts
import { format } from "./helpers/format";

app.ts dosyasından ../helpers/format yazmak, src klasörünün dışına çıkıp orada helpers aratır. Dosya başka bir klasördeyse ./ veya ../ sayısını, import eden dosyanın gerçek konumuna göre düzeltin. Linux gibi büyük-küçük harfe duyarlı sistemlerde ./Helpers/format, ./helpers/format ile aynı kabul edilmez.

Kaynak dosya gerçekten export ediyor mu?​


Dosya bulunuyor olsa bile istediğiniz isim dışa aktarılmamışsa ayrı bir hata alırsınız. Named export ile import biçimi aynı adı kullanmalıdır:

Kod:
// helpers/format.ts
export function format(value: string): string {
  return value.trim();
}

// app.ts
import { format } from "./helpers/format";

Default export kullanıyorsanız süslü parantez kullanmayın:

Kod:
// helpers/format.ts
export default function format(value: string): string {
  return value.trim();
}

// app.ts
import format from "./helpers/format";

Bu ayrım, “modül bulunamadı” ile “modül şu üyeyi export etmiyor” hatalarının farklı olduğunu gösterir. Dosya yolunu düzelttiğiniz hâlde yalnızca export edilen isimle ilgili hata kalıyorsa artık çözümleme değil, export/import biçimi kontrol edilmelidir.

tsconfig.json ve çalışma ortamını eşleştirin​


TypeScript modül çözümlemesini, kodun çalışacağı ortama göre yapar. Modern Node.js için node16 veya nodenext, bundler kullanan projeler için bundler tercih edilir. Node.js’in ESM kipinde göreli importlarda çıktı dosyasının uzantısı gerekebilir; kaynak TypeScript dosyası için genellikle .js yazılır:

Kod:
import { format } from "./helpers/format.js";

TypeScript, bu kullanımda tür bilgisi için format.ts dosyasını bulabilir; oluşturulan JavaScript ise format.js yolunu kullanır. Bundler yapılandırmalarında uzantısız yol desteklenebilir. Bu nedenle aynı import satırının Node.js’te çalışıp bundler yapılandırmasında veya tersinde hata vermesi mümkündür.
BelirtiMuhtemel nedenİlk kontrol
Cannot find module './x'Yol, klasör veya dosya adı yanlışImport eden dosyaya göre gerçek yolu ve harfleri kontrol edin
Module has no exported memberİsim export edilmemiş veya import biçimi yanlışNamed ve default export kullanımını karşılaştırın
Kısayol importu derleniyor, çalışırken bulunamıyorpaths yalnızca TypeScript’e tanıtılmışBundler veya çalışma zamanında aynı alias eşlemesini tanımlayın
Node.js ESM uzantı hatasıGöreli importta çıktı uzantısı eksikmodule ve moduleResolution ayarlarını birlikte inceleyin
paths ile @/helpers/format gibi bir kısayol tanımlamak, TypeScript’in dosyayı bulmasına yardım eder; import ifadesini çalışma zamanında kendiliğinden yeniden yazmaz. Bu yüzden bundler, test çalıştırıcısı veya Node.js de aynı alias yapılandırmasını bilmelidir. Aksi durumda tsc başarılı olsa bile uygulama çalışırken modül bulunamayabilir.

TypeScript’in ne aradığını doğrudan görün​


Proje kökünde, doğru tsconfig.json dosyasını kullanarak şu komutu çalıştırın:

Bash:
npx tsc --noEmit --traceResolution

Çıktıda sorunlu import için “Trying substitution” veya benzeri arama satırlarını izleyin. TypeScript yanlış klasörde arıyorsa göreli yolu ya da çalışma dizinini düzeltin. Dosyayı doğru bulduğu hâlde isim hatası veriyorsa export/import biçimini düzeltin. Hiçbir kaynak dosyayı kapsamıyorsa include, exclude veya proje referanslarını kontrol edin; ancak başka bir projenin tsconfig.json dosyasını rastgele kopyalamak yerine derlemeyi gerçekten hangi komutun başlattığını esas alın.

Bu kontrollerden sonra TypeScript hata vermiyor, fakat uygulama çalışırken modül bulunamıyorsa sorun TypeScript’te değil, çalışma zamanı veya bundler çözümlemesindedir. Derlenmiş JavaScript içindeki import yolunu, package.json içindeki type, exports ve kullanılan bundler alias ayarlarıyla birlikte kontrol edin. traceResolution yalnızca TypeScript’in ne aradığını kanıtlar; Node.js’in veya bundler’ın aynı dosyayı çalıştırırken bulacağını tek başına kanıtlamaz.
 

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