Sık Karşılaşılan Hatalar
'./relative-path' modülü bulunamıyor
Modül bulunamadı hatası almanızın birkaç farklı nedeni olabilir:
- Yol yanlış yazılmış olabilir. Lütfen yolun doğru olduğundan emin olun.
tsconfig.json
dosyanızdakibaseUrl
ayarına güveniyor olabilirsiniz. Vite, varsayılan olaraktsconfig.json
dosyasını dikkate almaz. Bu davranışa güveniyorsanız,vite-tsconfig-paths
eklentisini manuel olarak yüklemeniz gerekebilir.
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Alternatif olarak, yolunuzu kök dizine göreceli olmaktan çıkarabilirsiniz:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Göreceli takma adlar kullanmadığınızdan emin olun. Vite, bu takma adları içe aktarılan dosyaya göreceli olarak ele alır, kök dizine göre değil.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
"./mocked-file.js" zaten yüklü olduğu için taklit edilemiyor
Bu hata, vi.mock
yöntemi zaten yüklenmiş bir modül için çağrıldığında meydana gelir. Vitest bu hatayı verir çünkü önbelleğe alınmış modüller tercih edildiğinden bu çağrının bir etkisi olmayacaktır.
vi.mock
'un her zaman hoisted (yukarı taşınmış) olduğunu unutmayın. Bu, modülün test dosyası yürütülmeye başlamadan önce (büyük olasılıkla bir kurulum dosyasında) yüklendiği anlamına gelir. Hatayı düzeltmek için, içe aktarmayı kaldırın veya bir kurulum dosyasının sonunda önbelleği temizleyin. Bu durumda, kurulum dosyası ve test dosyanızın farklı modüllere başvuracağı unutulmamalıdır.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
Çalışan sonlandırılamadı
Bu hata, NodeJS'in fetch
'i varsayılan pool: 'threads'
ile kullanıldığında ortaya çıkabilir. Bu sorun, Timeout abort can leave process(es) running in the background #3077 numaralı GitHub sorununda takip edilmektedir.
Geçici bir çözüm olarak pool: 'forks'
veya pool: 'vmForks'
kullanabilirsiniz.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks
Segmentasyon Hataları ve Yerel Kod Hataları
pool: 'threads'
içinde yerel NodeJS modüllerini çalıştırmak, yerel koddan kaynaklanan anlaşılması zor hatalara yol açabilir.
Segmentation fault (core dumped)
thread '<unnamed>' panicked at 'assertion failed
Abort trap: 6
internal error: entered unreachable code
Bu durumlarda, yerel modülün çoklu iş parçacığı güvenli olarak tasarlanmamış olması muhtemeldir. Geçici bir çözüm olarak, test durumlarını birden çok node:worker_threads
yerine birden çok node:child_process
içinde çalıştıran pool: 'forks'
'a geçebilirsiniz.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks