reactjs - Modül bulunamadı: Hata: CRA uygulamasına typescript eklerken typescript dosyası çözümlenemiyor
Projeme typescript eklemeye ve yeni bileşenleri typescript ile yazmaya çalışıyorum. Belgeleri takip ettim ama şu hatayı aldım:
[typescript dosyası] çözülemiyor
bu durum, yeni bir create-react-app projesinde bile oluyor.
mevcut bir Create React App projesine typescript eklemek için CRA dokümantasyonuna göre, önce typescript ve tip tanım dosyalarını yüklemeliyiz:
npm install --save typescript @types/node @types/react @types/react-dom @types/jest
neredeyse bitti!
bir js/jsx dosyasının adını tsx olarak değiştirin ve geliştirme sunucunuzu yeniden başlatın!
sadelik için, Test bileşenini içeren test.tsx adlı bir typescript dosyası oluşturuyorum:
export default function Test(){
return (
<div>this is test to see typescirpt</div>
)
}
ve bunu main.js'ye aktararak render etmek:
import Test from "./test";
function App() {
return (
<div className="App">
<Test />
</div>
);
}
export default App;
Şimdi geliştirme sunucusunu yeniden başlatıyorum (öncekini CRTL+c ile kapattım) npm start ile.
Bu hatayı aldım:
Compiled with problems:
ERROR in ./src/App.js 4:0-26
Module not found: Error: Can't resolve './test' in '/home/g/w/ts/test_adding_ts/src'
Taze bir create-react-app projesi kullandım, dokümantasyonu izledim ve bu hatayı gördüm. (neden?)
bu benim kurulu bağımlılıklarım:
"dependencies": {
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.0.1",
"@testing-library/user-event": "^13.5.0",
"@types/jest": "^27.4.1",
"@types/node": "^17.0.24",
"@types/react": "^18.0.5",
"@types/react-dom": "^18.0.1",
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-scripts": "5.0.1",
"typescript": "^4.6.3",
"web-vitals": "^2.1.4"
},
Cevap #1
Kök dizininizde bir yapılandırma dosyası: tsconfig.json oluşturdunuz mu? Soruda bunun bahsedildiğini görmedim.
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src"
]
}
Eğer oluşturulmadıysa, package.json dosyasının bulunduğu kök dizinde bir tane oluşturabilir ve yukarıdaki yapılandırmaları yapıştırabilirsiniz. YA DA zaten oluşturulduysa, mevcut yapılandırmayı yukarıdaki yapılandırma ile değiştirebilir ve tekrar kontrol edebilirsiniz.
Cevap #2
CRA Dokümantasyon rehberi, her adımı olduğu gibi takip edersen işe yarar ama "herhangi bir dosyayı TypeScript dosyası olarak yeniden adlandır" denildiğinde çok zordur. create-react-app kaynak koduna göre TypeScript kullanmak için uygulamanızın ./tsconfig.json dosyasını içermesi gerekir.
Kılavuzda açıklandığı gibi basit yeniden adlandırma, yalnızca ./src/index.(js|ts|jsx|tsx) dosyası için çalışır, ancak tüm importlar başarısız olur çünkü create-react-app webpack'i tüm typescript dosyalarını hariç tutacak şekilde yapılandırır.
Minimal ./tsconfig.json dosyası, benim şahsen CRA sürüm 5.0.1 için kontrol ettiğim, şu şekildedir:
{
"compilerOptions": {
"esModuleInterop": true,
"jsx": "react"
}
}
