일반적인 오류
모듈 './relative-path'를 찾을 수 없습니다
모듈을 찾을 수 없다는 오류는 다음과 같은 여러 가지 원인으로 발생할 수 있습니다:
- 경로를 잘못 입력했을 수 있습니다. 경로가 올바른지 확인하십시오.
tsconfig.json의baseUrl에 의존하고 있을 수 있습니다. Vite는 기본적으로tsconfig.json을 무시하므로, 이 기능을 사용하려면vite-tsconfig-paths를 직접 설치해야 합니다.
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});또는 경로를 루트에 상대적이지 않도록 수정하십시오:
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'- 상대 별칭이 없는지 확인하십시오. Vite는 이를 가져오기가 있는 파일에 상대적인 것으로 처리합니다.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});"./mocked-file.js"를 모킹할 수 없습니다. 이미 로드되었습니다
이 오류는 vi.mock 메서드가 이미 로드된 모듈에 대해 호출될 때 발생합니다. 캐시된 모듈이 우선시되므로 이 호출은 아무런 효과가 없으며, Vitest는 이를 방지하기 위해 오류를 발생시킵니다.
vi.mock은 항상 호이스팅(hoisting)된다는 점을 기억하십시오. 즉, 모듈이 테스트 파일 실행이 시작되기 전에 로드되었을 가능성이 높으며, 대부분 설정 파일에서 로드됩니다. 오류를 해결하려면 가져오기를 제거하거나 설정 파일 마지막에 캐시를 초기화하십시오. 이 경우 설정 파일과 테스트 파일이 서로 다른 모듈을 참조하게 됨에 유의하십시오.
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();워커 종료 실패
이 오류는 NodeJS의 fetch가 기본 pool: 'threads'와 함께 사용될 때 발생할 수 있습니다. 이 문제는 Timeout abort can leave process(es) running in the background #3077 이슈에서 다루고 있습니다.
해결책으로 pool: 'forks' 또는 pool: 'vmForks'로 전환할 수 있습니다.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});vitest --pool=forks세그먼트 오류 및 네이티브 코드 오류
pool: 'threads'에서 네이티브 NodeJS 모듈을 실행할 경우 네이티브 코드에서 다음과 같은 이해하기 어려운 오류가 발생할 수 있습니다.
Segmentation fault (core dumped)thread '<unnamed>' panicked at 'assertion failedAbort trap: 6internal error: entered unreachable code
이러한 경우 네이티브 모듈은 다중 스레드 환경에서 안전하게 작동하도록 빌드되지 않았을 가능성이 높습니다. 해결책으로, 테스트 케이스를 여러 node:worker_threads 대신 여러 node:child_process에서 실행하는 pool: 'forks'로 전환할 수 있습니다.
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});vitest --pool=forks