一般的なエラー
モジュール「./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,
}
}
})
モジュール「./mocked-file.js」は既にロードされているためモックできません
このエラーは、vi.mock
メソッドが既に読み込まれたモジュールに対して呼び出されたときに発生します。Vitest は、キャッシュされたモジュールが優先されるため、この呼び出しに効果がないため、このエラーをスローします。
vi.mock
は常にホイスティングされることを覚えておいてください。つまり、テストファイルの実行が開始される前にモジュールが読み込まれます。ほとんどの場合、設定ファイルです。エラーを修正するには、インポートを削除するか、設定ファイルの最後にキャッシュをクリアします。設定ファイルとテストファイルでその場合異なるモジュールが参照されることに注意してください。
ts
// setupFile.js
import { vi } from 'vitest'
import { sideEffect } from './mocked-file.js'
sideEffect()
vi.resetModules()
ワーカーの終了に失敗しました
このエラーは、NodeJS の fetch
がデフォルトの pool: 'threads'
で使用されている場合に発生する可能性があります。この問題は問題 タイムアウトの解除により、プロセスがバックグラウンドで実行されたままになる #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"
}