typescript - hata TS2307: Modül bulunamıyor (ama js çalıştırıldığında bulunabiliyor)
İşte senaryo:
Swagger kullanarak REST servisime bir API spesifikasyonu oluşturdum. Daha sonra Swagger Editor aracından servisime çağrı yapmak için Angular TypeScript başlangıç dosyalarını oluşturuyorum.
Kalıp dosyalarını oluşturduğumda, tümü typescript dahili ad alanını kullanan birden fazla dosya oluyor, oysa projemin geri kalanı AMD. Bu yüzden bu derlemeyi, sanki üçüncü taraf bir AMD dışı kütüphane gibi ele almaya çalışıyorum. Typescript dosyalarını derlediğimde, tek bir JavaScript dosyasına aktarım yapıyorum.
Projem RequireJS kullanıyor ve tek javascript dosyamı RequireJS ile şöyle kaydettim:
requirejs.config({
paths: 'myApi': 'my/path/to/myApi', // There is no ts file with this name but there is a js once compiled
shim: {
'myApi': {
init: () => {
return this.API; // The top level object from the boilerplate is API
},
exports: 'myApi'
}
}
}
})
Başka bir dosyada şu kod var:
import myApi = require('myApi');
console.log(myApi);
Yukarıda bu aynı dosyada şunlar var:
import angular = require('angular');
myApi ile benzer şekilde RequireJS ile kayıtlı olan bu. Typescript, angular'ı bulmakta sorun yaşamıyor.
Projemi derlediğimde typescript alıyorum
hata TS2307: İçe aktarmaya çalıştığınız dosyadan 'myApi' modülü bulunamıyor.
Gerçek projeyi çalıştırdığımda, doğru myApi nesnesi konsola kaydediliyor.
Typescript'in bu modülü görmesini nasıl sağlayabilirim (veya başka şekilde bu hata mesajını nasıl bastırabilirim)?
Cevap #1
Benim tercih ettiğim çözüm, dosyalarımı oluşturmak ve sonra onları dahili yerine harici modüller olacak şekilde manuel olarak değiştirmek. Alternatif olarak, dosyalarımı harici olarak oluşturacak şekilde swagger codegen kaynağını değiştirmek olurdu ama şimdilik manuel yöntemle idare etmek zorunda kalacağım.