Běžné chyby
Nelze nalézt modul './relativní-cesta'
Pokud se zobrazí chyba, že modul nelze nalézt, může to mít několik příčin:
- Překlep v cestě: Zkontrolujte, zda je cesta k modulu správná a neobsahuje překlepy.
- Závislost na
baseUrl
vtsconfig.json
: Vite standardně nepoužívá nastavenítsconfig.json
, včetněbaseUrl
. Pokud na tuto funkcionalitu spoléháte, nainstalujte balíčekvite-tsconfig-paths
a nakonfigurujte jej ve Vite:
- Závislost na
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Alternativně můžete upravit cestu tak, aby nebyla relativní ke kořenovému adresáři projektu:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Relativní aliasy: Ujistěte se, že nepoužíváte relativní aliasy. Vite je interpretuje relativně k souboru, ze kterého je import proveden, 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 už byl načten
Tato chyba nastane, když je metoda vi.mock
volána na modulu, který již byl načten. Vitest tuto chybu vyhazuje, protože toto volání nemá žádný efekt, jelikož se preferují moduly z cache.
Pamatujte, že vi.mock
je vždy tzv. hoisted - to znamená, že modul byl načten předtím, než se začal vykonávat testovací soubor - s největší pravděpodobností v setup souboru. Chcete-li tuto chybu opravit, odstraňte import nebo vymažte cache na konci setup souboru - dejte si pozor, že setup soubor a testovací soubor budou v takovém případě odkazovat na různé moduly.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
Nepodařilo se ukončit worker
Tato chyba může nastat, když je použito NodeJS fetch
s výchozím nastavením pool: 'threads'
. Tento problém je sledován v issue Timeout abort can leave process(es) running in the background #3077.
Jako work-around můžete přepnout na pool: 'forks'
nebo pool: 'vmForks'
.
Zadejte pool
ve svém konfiguračním souboru:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
Nebo ve skriptech package.json
:
scripts: {
- "test": "vitest"
+ "test": "vitest --pool=forks"
}