일반적인 오류
모듈 './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 failed
Abort trap: 6
internal 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