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.jsonfájlban abaseUrl-t használja. A Vite alapértelmezés szerint nem veszi figyelembe atsconfig.jsonfájlt, ezért ha ezt a viselkedést használja, telepítenie kell avite-tsconfig-pathscsomagot.
- 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=forksSzegfaultok é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 failedAbort trap: 6internal 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