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.jsondosyanızdakibaseUrlayarına güveniyor olabilirsiniz. Vite, varsayılan olaraktsconfig.jsondosyasını dikkate almaz. Bu davranışa güveniyorsanız,vite-tsconfig-pathseklentisini 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=forksSegmentasyon 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 failedAbort trap: 6internal 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