よくあるエラー
モジュール './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,
},
},
});ワーカーの終了に失敗しました
このエラーは、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:worker_threadsではなく、複数のnode:child_processで実行されます。
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
pool: 'forks',
},
});bash
vitest --pool=forks