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
baseUrlve vašem souborutsconfig.json. Vite ve výchozím nastavení neberetsconfig.jsonv ú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=forksSegfaulty 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 failedAbort trap: 6internal 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