Běžné chyby
Nelze najít modul './relative-path'
Pokud se zobrazí chyba, že modul nelze najít, může to mít několik příčin:
- Překlep v cestě. Ujistěte se, že je cesta správně zapsána.
- Spoléháte se na
baseUrl
ve vašem souborutsconfig.json
. Vite ve výchozím nastavení neberetsconfig.json
v úvahu. Pokud toto chování potřebujete, budete muset nainstalovatvite-tsconfig-paths
.
- Spoléháte se na
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Alternativně přepište cestu tak, aby nebyla relativní ke kořenovému adresáři:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Máte definované relativní aliasy. Vite je považuje za relativní k souboru, kde je import, nikoli ke kořenovému adresáři projektu.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
Nelze mockovat "./mocked-file.js", protože je již načten
Tato chyba nastane, když je metoda vi.mock
volána na modulu, který byl již načten. Vitest tuto chybu vyhodí, protože takové volání nemá žádný účinek, jelikož jsou preferovány cachované moduly.
Pamatujte, že vi.mock
je vždy přesunut nahoru (hoisted) – to znamená, že modul byl načten před spuštěním testovacího souboru – s největší pravděpodobností v souboru pro nastavení (setup file). Chcete-li chybu opravit, odstraňte import nebo vymažte cache na konci souboru pro nastavení. Mějte na paměti, že v takovém případě budou soubor pro nastavení a testovací soubor odkazovat na různé instance modulů.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
Nepodařilo se ukončit worker
Tato chyba se může objevit, když je použito fetch
z NodeJS s výchozím nastavením pool: 'threads'
. Tento problém je sledován v rámci issue Timeout abort can leave process(es) running in the background #3077.
Jako dočasné řešení můžete přepnout na pool: 'forks'
nebo pool: 'vmForks'
.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks
Segfaulty a chyby nativního kódu
Spouštění nativních modulů NodeJS v pool: 'threads'
může vést k záhadným chybám pocházejícím z nativního kódu.
Segmentation fault (core dumped)
thread '<unnamed>' panicked at 'assertion failed
Abort trap: 6
internal error: entered unreachable code
V těchto případech nativní modul pravděpodobně není sestaven jako vícevláknově bezpečný. Jako dočasné řešení můžete přepnout na pool: 'forks'
, který spouští testovací případy v několika node:child_process
namísto několika node:worker_threads
.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks