常見錯誤
找不到模組 './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 會將其視為相對於導入檔案的路徑,而非專案根目錄。
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
alias: {
'@/': './src/',
'@/': new URL('./src/', import.meta.url).pathname,
},
},
});無法終止 worker
當 NodeJS 的 fetch 與預設的 pool: 'threads' 一起使用時,可能會發生此錯誤。此問題在 Timeout abort can leave process(es) running in the background #3077 中持續追蹤。
暫時的解決方案是,您可以切換到 pool: 'forks' 或 pool: 'vmForks'。
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});bash
vitest --pool=forks記憶體區段錯誤和原生程式碼錯誤
在 pool: 'threads' 中執行 原生 NodeJS 模組 時,可能會遇到來自原生程式碼的難以理解的錯誤,例如:
Segmentation fault (core dumped)thread '<unnamed>' panicked at 'assertion failedAbort trap: 6internal error: entered unreachable code
在這些情況下,原生模組可能並非為多執行緒安全而建置。作為解決方法,您可以切換到 pool: 'forks',它會在多個 node:child_process 中執行測試案例,而非在多個 node:worker_threads 中執行。
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});bash
vitest --pool=forks