Gyakori hibák
Nem található a modul: './relatív-útvonal'
Ha olyan hibát kap, hogy a modul nem található, az több okra is visszavezethető:
- Elírta az útvonalat. Ellenőrizze, hogy az útvonal helyes-e.
- Lehet, hogy a
tsconfig.json
fájlban abaseUrl
-t használja. A Vite alapértelmezés szerint nem veszi figyelembe atsconfig.json
fájlt, ezért ha ezt a viselkedést használja, telepítenie kell avite-tsconfig-paths
csomagot.
- Lehet, hogy a
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Vagy módosítsa az útvonalat, hogy ne a gyökérből induljon ki:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Győződjön meg róla, hogy nincsenek relatív aliasai. A Vite ezeket ahhoz a fájlhoz viszonyítva tekinti relatívnak, ahol az importálás történik, nem pedig a gyökérhez.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
A "./mocked-file.js" fájl nem mockolható, mert már be van töltve
Ez a hiba akkor fordul elő, ha a vi.mock
metódust egy már betöltött modulra hívják meg. A Vitest azért adja ezt a hibát, mert ennek a hívásnak nincs hatása, mivel a gyorsítótárazott modulok előnyben részesülnek.
Ne feledje, hogy a vi.mock
mindig felemelt (hoisted) – ez azt jelenti, hogy a modul a tesztfájl végrehajtásának megkezdése előtt betöltődött – feltehetően egy beállító fájlban. A hiba kijavításához távolítsa el az importálást, vagy törölje a gyorsítótárat a beállító fájl végén – fontos megjegyezni, hogy ebben az esetben a beállító fájl és a tesztfájl különböző modulokra hivatkozik majd.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
A worker leállítása sikertelen
Ez a hiba akkor fordulhat elő, ha a NodeJS fetch
függvényét az alapértelmezett pool: 'threads'
beállítással használja. Ezt a problémát a Timeout abort can leave process(es) running in the background #3077 hibajegyben követhető nyomon.
Áthidaló megoldásként átválthat a pool: 'forks'
vagy a pool: 'vmForks'
beállításra.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks
Szegfaultok és natív kódhibák
A natív NodeJS modulok futtatása a pool: 'threads'
beállítással rejtélyes, natív kódból eredő hibákat okozhat.
Segmentation fault (core dumped)
thread '<unnamed>' panicked at 'assertion failed
Abort trap: 6
internal error: entered unreachable code
Ezekben az esetekben a natív modul valószínűleg nem szálbiztos működésre készült. Áthidaló megoldásként átválthat a pool: 'forks'
beállításra, amely a teszteseteket több node:child_process
folyamatban futtatja, nem pedig több node:worker_threads
-ben.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks