Kısa cevap
Module not found hatası, programın yüklemeye çalıştığı modülü veya paketi bulamadığı anlamına gelir. En yaygın nedenler yanlış ad veya yol, modülün yüklenmemiş olması, yanlış çalışma dizini veya uyumsuz ortamdır. Çözüm, içe aktarmayı kontrol etmek, paketi yüklemek ve projeyi doğru klasörden çalıştırmaktır.
Sorun nasıl anlaşılır
- Python'da `ModuleNotFoundError: No module named 'x'` mesajı
- Node.js'te `Error: Cannot find module 'x'` mesajı
- Uygulama başlatıldıktan hemen sonra çöküyor
- Hata yalnızca başka bir makinede veya CI ortamında ortaya çıkıyor
- İçe aktarma düzenleyicide çalışıyor ancak terminalden çalışmıyor
En yaygın nedenler
Modül yüklenmemiş
Kodun aradığı paket ortamda mevcut değil. Bu genellikle proje indirildikten sonra `npm install` veya `pip install` çalıştırılmadığında olur.
Yanlış ad veya yol
İçe aktarmada yazım hatası, yanlış göreli yol veya Python paketinde eksik `__init__.py` var. Node.js, `node_modules` içinde tam modül adını arar.
Yanlış çalışma dizini
Komut, proje kökü olmayan bir klasörden çalıştırılıyor, bu nedenle `node_modules` veya sanal ortam görünmüyor. Başlatmadan önce hangi klasörde olduğunuzu kontrol edin.
Uyumsuz ortam
Sanal ortam yerine genel Python veya projenin beklediğinden farklı bir Node.js sürümü kullanıyorsunuz. Bağımlılıklar bu durumda görünmez.
Önbellek veya yükleme sorunları
Kısmen yüklenmiş paket, bozuk `node_modules` veya eski `package-lock.json`, modülün var olmasına rağmen erişilememesine neden olabilir.
Adım adım çözüm
- 1
Hatanın tam modül adını okuyun
Terminaldeki mesaj, eksik modülün adını belirtir. Bunu not edin ve koddaki içe aktarma satırıyla karşılaştırın. Node.js'te hata genellikle
Error: Cannot find moduleile, Python'da iseModuleNotFoundErrorile başlar. - 2
Proje kökünde olup olmadığınızı kontrol edin
Geçerli klasörü görmek için
pwd(macOS/Linux), Windows komut satırındacdveya PowerShell'deGet-Locationçalıştırın. Bu klasörde Node.js içinpackage.jsonveya Python içinrequirements.txt/pyproject.tomlbulunmalıdır. Yoksacd yol/projekomutuyla doğru klasöre geçin. - 3
Bağımlılıkları yükleyin
Node.js için proje kökünde
npm installçalıştırın. Python için sanal ortamı etkinleştirin vepip install -r requirements.txtçalıştırın. Modül hâlâ eksikse tek tek yükleyin:npm install paket-adiveyapip install paket-adi. - 4
İçe aktarmayı ve yolu kontrol edin
İçe aktarmanın gerçek paket adına ve klasör yapısına uyduğundan emin olun. Python'da göreli içe aktarmalar modülün nereden çalıştırıldığına bağlıdır; Node.js'te yerel dosyalar için yolun
./ile başlayıp başlamadığını kontrol edin. Büyük/küçük harf duyarlılığına dikkat edin. - 5
Önbelleği temizleyin ve yeniden yükleyin
Modül varsa ancak görünmüyorsa, silmeden önce projenin yedeğini alın veya Git deposuna kaydedildiğinden emin olun. Ardından
node_modulesvepackage-lock.jsondosyalarını silin venpm installkomutunu yeniden çalıştırın;package-lock.jsonsilmek bağımlılık sürümlerini değiştirebilir. Python'da__pycache__klasörlerini silin ve paketi yeniden yükleyin. Bu işlem zaman alabilir. - 6
Dil sürümünü ve ortamı kontrol edin
node -vveyapython --versionçalıştırın ve projenin gereksinimleriyle karşılaştırın. Python'da sanal ortamın etkin olup olmadığını kontrol edin (istem adını gösterir). Node.js'te sürüm değiştirmek gerekirsenvmkullanın. - 7
İzole olarak test edin
Yalnızca modülü içe aktaran minimal bir betik oluşturun ve çalıştırın. O zaman da hata veriyorsa sorun yükleme veya ortamdadır, kodun geri kalanında değil. Çalışıyorsa hata yolda veya ana uygulamayı başlatma şeklindedir.
Hiçbir şey işe yaramadığında
Tüm adımları geçtiyseniz ve hata devam ediyorsa, projenin monorepo veya çalışma alanı ayarlarını kullanıp kullanmadığını kontrol edin; bu durumda paketler başka bir klasörde olabilir. Genel bir yüklemenin yerel eksikliği maskeleyip maskelemediğine de bakın. Node.js'te paketin bağımlılık ağacında olup olmadığını görmek için npm ls paket-adi çalıştırın. Python'da pip show paket-adi yükleme konumunu verir. Hata yalnızca CI sisteminde ortaya çıkıyorsa, dil sürümlerini ve yükleme adımlarını yerel ortamla karşılaştırın. Son seçenek olarak yeni bir sanal ortam oluşturun veya projeyi sıfırdan klonlayıp yüklemeyi tekrarlayın.
Tekrarlanmaması için
- Projeyi indirdikten sonra her zaman `npm install` veya `pip install -r requirements.txt` çalıştırın
- Bağımlılık sürümlerini kilitleyin (`package-lock.json`, `requirements.txt`) ve depoda tutun
- Python için sanal ortam, Node.js için `nvm` kullanın
- Komutları çalıştırmadan önce proje kökünde olduğunuzu kontrol edin
Ne zaman uzmana başvurmalı
Hata karmaşık bir derleme sisteminden, monorepoddan veya CI yapılandırmasından kaynaklanıyorsa ya da tüm adımlara rağmen tekrarlıyorsa, ortamı ve bağımlılıkları birlikte kontrol etmek için BT desteğine başvurun.
Yazılım ve ürün geliştirme · Özel uygulamalar, SaaS ve 4-8 haftada MVPSık sorulan sorular
Paket yüklüyken neden Module not found hatası alıyorum?
Genellikle komut, paketin yüklendiği ortamdan farklı bir ortam kullanıyordur. Sanal ortamın etkin olup olmadığını veya doğru proje klasöründe olup olmadığınızı kontrol edin.
node_modules ve package-lock.json dosyalarını silmek güvenli mi?
Genellikle evet, ancak önce projenin yedeğini alın veya Git deposuna kaydedildiğinden emin olun. `package-lock.json` silmek bağımlılık sürümlerini değiştirebilir; silme işleminden sonra bağımlılıkların `package.json` dosyasından yüklenmesi için `npm install` komutunu yeniden çalıştırın.
Hata net değilse hangi modülün eksik olduğunu nasıl anlarım?
Uygulamayı terminalden çalıştırın ve hatanın son satırını okuyun; genellikle modül adı oradadır. Python'da daha ayrıntılı içe aktarma çıktısı için `python -v` çalıştırabilirsiniz.