Erreurs courantes
Impossible de trouver le module './chemin relatif'
Si vous rencontrez une erreur indiquant qu'un module est introuvable, plusieurs causes sont possibles :
- Chemin d'accès incorrect : Vérifiez attentivement l'orthographe et la validité du chemin d'accès au module.
- Dépendance de
baseUrl
danstsconfig.json
: Par défaut, Vite ignore le fichiertsconfig.json
. Si votre projet utilisebaseUrl
pour la résolution des modules, vous devez installer et configurervite-tsconfig-paths
.
- Dépendance de
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Sinon, modifiez le chemin d'accès pour qu'il ne soit plus relatif à la racine du projet :
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Alias relatifs : Évitez d'utiliser des alias relatifs. Vite les interprète comme étant relatifs au fichier d'importation, et non à la racine du projet.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
Impossible de simuler "./mocked-file.js" car il est déjà chargé
Cette erreur se produit lorsque la méthode vi.mock
est appelée sur un module déjà chargé. Vitest génère cette erreur car cet appel n'a aucun effet, les modules mis en cache étant privilégiés.
N'oubliez pas que vi.mock
est toujours remonté (hoisted) - cela signifie que le module a été chargé avant le début de l'exécution du fichier de test - très probablement dans un fichier de configuration (setup). Pour corriger l'erreur, supprimez l'import ou effacez le cache à la fin d'un fichier de configuration - sachez que le fichier de configuration et votre fichier de test feront alors référence à des modules différents.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
Échec de l'arrêt du worker
Cette erreur peut se produire lorsque fetch
de NodeJS est utilisé avec le paramètre par défaut pool: 'threads'
. Ce problème est suivi dans le ticket Timeout abort can leave process(es) running in the background #3077.
Comme solution de contournement, vous pouvez passer à pool: 'forks'
ou pool: 'vmForks'
.
Spécifiez pool
dans votre fichier de configuration :
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
Ou dans vos scripts package.json
:
scripts: {
- "test": "vitest"
+ "test": "vitest --pool=forks"
}