Typowe błędy
Nie można znaleźć modułu './relative-path'
Jeśli napotkasz błąd informujący o niemożności znalezienia modułu, może to wynikać z kilku przyczyn:
- Podano nieprawidłową ścieżkę. Upewnij się, że ścieżka jest poprawna.
- Używasz
baseUrl
w swoimtsconfig.json
. Vite domyślnie nie uwzględniatsconfig.json
, dlatego jeśli korzystasz z tej funkcji, może być konieczne samodzielne zainstalowanievite-tsconfig-paths
.
- Używasz
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Alternatywnie, zmień ścieżkę tak, aby nie była względna do katalogu głównego projektu:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Upewnij się, że nie masz względnych aliasów. Vite traktuje je jako względne do pliku, w którym dokonujesz importu, a nie do katalogu głównego projektu.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
Niepowodzenie zakończenia workera
Ten błąd może wystąpić, gdy używasz fetch
z NodeJS przy domyślnym ustawieniu pool: 'threads'
. Problem ten jest monitorowany w zgłoszeniu Timeout abort can leave process(es) running in the background #3077.
Aby obejść ten problem, możesz przełączyć się na pool: 'forks'
lub pool: 'vmForks'
.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks
Błędy segmentacji i błędy kodu natywnego
Uruchamianie natywnych modułów NodeJS w trybie pool: 'threads'
może prowadzić do niejasnych błędów generowanych przez kod natywny.
Segmentation fault (core dumped)
thread '<unnamed>' panicked at 'assertion failed
Abort trap: 6
internal error: entered unreachable code
W takich przypadkach moduł natywny prawdopodobnie nie jest zbudowany w sposób bezpieczny dla wielu wątków. Aby obejść ten problem, możesz przełączyć się na pool: 'forks'
, który wykonuje testy w wielu procesach node:child_process
zamiast w wielu node:worker_threads
.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks