Yaygın Hatalar
'./relative-path' Modülü Bulunamadı Hatası
Modül bulunamadı hatası alıyorsanız, bunun birkaç farklı nedeni olabilir:
- Yolu yanlış yazmış olabilirsiniz. Yolun doğru yazıldığından emin olun.
tsconfig.json
dosyanızdabaseUrl
'e bağımlı olabilirsiniz. Vite, varsayılan olaraktsconfig.json
dosyasını dikkate almaz. Bu nedenle, bu özelliği kullanıyorsanızvite-tsconfig-paths
paketini kendiniz yüklemeniz gerekebilir.
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Alternatif olarak, yolunuzu köke göreli olmaktan çıkararak yeniden yazın:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Göreli [alias]larınızın](../config/#alias) olmadığından emin olun. Vite, bunları köke göre değil, içe aktarımın yapıldığı dosyanın konumuna göre değerlendirir.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
"./mocked-file.js" Zaten Yüklendiği İçin Mock'lanamıyor
Bu hata, vi.mock
metodu zaten yüklenmiş bir modül üzerinde çağrıldığında meydana gelir. Vitest bu hatayı verir çünkü önbelleğe alınmış modüller tercih edildiği için bu çağrının bir etkisi yoktur.
vi.mock
'un her zaman yukarı taşındığını (hoisted) 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 (setup file) yüklendiği anlamına gelir. Hatayı düzeltmek için, import'u kaldırın veya kurulum dosyasının sonunda önbelleği temizleyin - bu durumda kurulum dosyası ve test dosyanızın farklı modüllere başvuracağını unutmayın.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
Worker Sonlandırılamadı
Bu hata, NodeJS'in fetch
'i varsayılan pool: 'threads'
ile kullanıldığında meydana gelebilir. Bu sorun şu issue'da takip edilmektedir: Timeout abort can leave process(es) running in the background #3077.
Geçici çözüm olarak pool: 'forks'
veya pool: 'vmForks'
'e geçebilirsiniz.
Yapılandırma dosyanızda pool
belirtin:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
Veya package.json
scriptlerinizde:
scripts: {
- "test": "vitest"
+ "test": "vitest --pool=forks"
}