常見錯誤
找不到模組 './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 failed
Abort trap: 6
internal 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