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
baseUrl
nel tuotsconfig.json
. Vite non consideratsconfig.json
per impostazione predefinita. Se questo comportamento è necessario, dovrai installarevite-tsconfig-paths
manualmente.
- 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"
}