Erros Comuns
Não foi possível encontrar o módulo './relative-path'
Se você receber um erro indicando que o módulo não foi encontrado, isso pode ter algumas causas diferentes:
- Você digitou o caminho incorretamente. Certifique-se de que o caminho está exato.
- É possível que você esteja utilizando
baseUrl
no seutsconfig.json
. Por padrão, o Vite não considera otsconfig.json
. Se você depende desse comportamento, pode ser necessário instalar ovite-tsconfig-paths
.
- É possível que você esteja utilizando
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
Ou, reescreva seu caminho para que não seja relativo à raiz do projeto:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- Certifique-se de não ter aliases relativos. O Vite os trata como relativos ao arquivo onde a importação é feita, em vez de relativos à raiz do projeto.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
Não é possível simular "./mocked-file.js" porque já foi carregado
Este erro ocorre quando o método vi.mock
é chamado para um módulo que já foi carregado. O Vitest lança este erro porque a chamada não terá efeito, uma vez que módulos em cache são preferidos.
Lembre-se de que vi.mock
é sempre içado (hoisted) – isso significa que o módulo foi carregado antes mesmo do arquivo de teste começar a ser executado, provavelmente em um arquivo de configuração (setup file). Para corrigir o erro, remova a importação ou limpe o cache no final de um arquivo de configuração. Esteja ciente de que, nesse caso, o arquivo de configuração e o seu arquivo de teste farão referência a módulos diferentes.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
Falha ao encerrar o worker
Este erro pode ocorrer quando o fetch
do NodeJS é usado com o pool: 'threads'
padrão. Este problema está sendo acompanhado na issue Timeout abort can leave process(es) running in the background #3077.
Como alternativa, você pode mudar para pool: 'forks'
ou pool: 'vmForks'
.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks
Violações de segmentação e erros de código nativo
A execução de módulos nativos do NodeJS com pool: 'threads'
pode resultar em erros obscuros de código nativo.
Segmentation fault (core dumped)
thread '<unnamed>' panicked at 'assertion failed
Abort trap: 6
internal error: entered unreachable code
Nesses casos, o módulo nativo provavelmente não foi construído para ser thread-safe. Como alternativa, você pode mudar para pool: 'forks'
, que executa os casos de teste em múltiplos node:child_process
em vez de múltiplos node:worker_threads
.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
vitest --pool=forks