일반적인 오류
모듈 './relative-path'을(를) 찾을 수 없음
모듈을 찾을 수 없다는 오류가 발생하면 다음과 같은 원인이 있을 수 있습니다.
- 경로를 잘못 입력했을 가능성이 있습니다. 경로가 정확한지 다시 확인해 보세요.
tsconfig.json
의baseUrl
을 사용하는 경우, Vite는 기본적으로tsconfig.json
설정을 인식하지 못합니다. 따라서 해당 설정을 사용하려면vite-tsconfig-paths
를 직접 설치해야 합니다.
ts
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
});
또는 루트 기준 경로 대신 상대 경로를 사용하도록 수정하십시오.
diff
- import helpers from 'src/helpers'
+ import helpers from '../src/helpers'
- 상대 별칭을 사용하고 있는지 확인하세요. Vite는 별칭을 프로젝트 루트가 아닌, 해당 import 구문이 포함된 파일을 기준으로 처리합니다.
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});
"./mocked-file.js"를 모의(mock)할 수 없습니다. 이미 로드되었기 때문입니다.
이 오류는 이미 로드된 모듈에서 vi.mock
메서드를 호출할 때 발생합니다. Vitest는 캐시된 모듈이 우선되기 때문에 이 호출이 아무 효과가 없으므로 이 오류를 발생시킵니다.
vi.mock
은 항상 호이스팅(hoisted)된다는 것을 기억하십시오. 이는 모듈이 테스트 파일 실행을 시작하기 전에, 아마도 셋업 파일에서 로드되었다는 의미입니다. 오류를 수정하려면 가져오기를 제거하거나 셋업 파일 끝에서 캐시를 지우십시오. 이 경우 셋업 파일과 테스트 파일은 서로 다른 모듈을 참조합니다.
ts
// setupFile.js
import { vi } from 'vitest';
import { sideEffect } from './mocked-file.js';
sideEffect();
vi.resetModules();
작업자(Worker)를 종료하지 못했습니다.
이 오류는 NodeJS의 fetch
가 기본 pool: 'threads'
와 함께 사용될 때 발생할 수 있습니다. 이 문제는 이슈 Timeout abort can leave process(es) running in the background #3077에서 추적되고 있습니다.
해결 방법으로 pool: 'forks'
또는 pool: 'vmForks'
로 전환할 수 있습니다.
구성 파일에서 pool
을 지정합니다.
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});
또는 package.json
스크립트에서 지정합니다.
diff
scripts: {
- "test": "vitest"
+ "test": "vitest --pool=forks"
}