Częste błędy
Nie można znaleźć modułu './relative-path'
Jeśli pojawia się błąd informujący o niemożności znalezienia modułu, przyczyny mogą być różne:
- Błąd w ścieżce: Sprawdź, czy ścieżka do modułu jest poprawna i nie zawiera literówek.
- Użycie
baseUrl
wtsconfig.json
: Domyślnie Vite nie uwzględnia konfiguracji z plikutsconfig.json
. Jeśli korzystasz z opcjibaseUrl
, konieczna może być instalacja wtyczkivite-tsconfig-paths
.
- Użycie
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Alternatywnie, możesz zmodyfikować ścieżkę importu, aby nie była relatywna do katalogu głównego projektu:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Względne aliasy: Upewnij się, że nie używasz względnych aliasów w konfiguracji projektu. Vite interpretuje je jako ścieżki relatywne do pliku, w którym następuje import, a nie do katalogu głównego projektu.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
Nie można zamockować "./mocked-file.js", ponieważ został już załadowany
Ten błąd występuje, gdy metoda vi.mock
jest wywoływana na module, który został już załadowany. Vitest zgłasza ten błąd, ponieważ to wywołanie nie ma żadnego efektu, ponieważ preferowane są moduły z pamięci podręcznej.
Pamiętaj, że vi.mock
jest zawsze podnoszone (hoisted) - oznacza to, że moduł został załadowany przed rozpoczęciem wykonywania pliku testowego - najprawdopodobniej w pliku konfiguracyjnym (setup file). Aby naprawić ten błąd, usuń import lub wyczyść pamięć podręczną na końcu pliku konfiguracyjnego - uważaj, że plik konfiguracyjny i plik testowy będą w takim przypadku odwoływać się do różnych modułów.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
Nie udało się zakończyć pracy workera
Ten błąd może wystąpić, gdy fetch
z NodeJS jest używany z domyślnym ustawieniem pool: 'threads'
. Ten problem jest śledzony w zgłoszeniu Timeout abort can leave process(es) running in the background #3077.
Jako obejście możesz przełączyć się na pool: 'forks'
lub pool: 'vmForks'
.
Określ pool
w swoim pliku konfiguracyjnym:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
Lub w skryptach package.json
:
scripts: {
- "test": "vitest"
+ "test": "vitest --pool=forks"
}