Errori Frequenti
Impossibile trovare il modulo './percorso-relativo'
Se ricevi un errore che indica l'impossibilità di trovare il modulo, le cause potrebbero essere diverse:
- Hai digitato in modo errato il percorso. Verifica attentamente che il percorso sia corretto.
- Potresti dipendere da
baseUrlnel tuotsconfig.json. Vite non consideratsconfig.jsonper impostazione predefinita. Se questo comportamento è necessario, dovrai installarevite-tsconfig-pathsmanualmente.
- Potresti dipendere da
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});In alternativa, riscrivi il percorso in modo che non sia relativo alla directory root:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'- Assicurati di non utilizzare alias relativi. Vite li interpreta come relativi al file da cui vengono importati, anziché alla directory root.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});Impossibile simulare "./mocked-file.js" perché è già stato caricato
Questo errore si verifica quando il metodo vi.mock viene chiamato su un modulo che è già stato caricato. Vitest genera questo errore perché questa chiamata non ha effetto poiché i moduli memorizzati nella cache sono preferiti.
Ricorda che vi.mock viene sempre "hoisted" (sollevato) - il che significa che il modulo è stato caricato prima che il file di test iniziasse l'esecuzione, molto probabilmente in un file di setup. Per correggere l'errore, rimuovi l'import o cancella la cache alla fine di un file di setup - tieni presente che il file di setup e il tuo file di test faranno riferimento a moduli diversi in quel caso.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();Impossibile terminare il worker
Questo errore può verificarsi quando viene utilizzato fetch di NodeJS con l'impostazione predefinita pool: 'threads'. Questo problema è tracciato nell'issue Timeout abort can leave process(es) running in the background #3077.
Come soluzione alternativa, puoi passare a pool: 'forks' o pool: 'vmForks'.
Specifica pool nel tuo file di configurazione:
// vitest.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});Oppure nei tuoi script package.json:
scripts: {
- "test": "vitest"
+ "test": "vitest --pool=forks"
}