Vitest で「describe is not defined」が解決できない(globals 未設定)
Vitest は既定で describe / it / expect をグローバルに公開しない。
test.globals を true にするか、各ファイルで vitest から読み込めば describe is not defined を解消できる。
#vitest#globals#config
公開:
要約
describe is not defined(it / expect でも同様)は、Vitest が既定でテスト API をグローバルへ公開しないために出る。
Vitest は明示性を重視して、既定では describe などを各ファイルで読み込ませる方針になっている。
設定で globals: true にするか、各ファイルで vitest から読み込めば解消する(公式: globals)。
よくある原因
- Vitest は既定で global API を提供しない。
- Jest から移行し、テスト関数を読み込まずに使っている。
globals: trueにしたが、TypeScript の型設定が無く型エラーになる。
型エラー(Cannot find name 'describe' など)と実行時エラー(ReferenceError)は別物で、前者は tsconfig の types 設定、後者は globals の有効化または読み込み不足が原因になりやすい。
どちらの症状かを先に切り分けると、設定すべき箇所が一意に決まる。
解決策
1. config で globals を有効化する
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: { globals: true },
});2. 各テストで読み込む
import { describe, it, expect } from 'vitest';globals を使わない方針なら、ファイルごとに明示的に読み込む。
3. TypeScript の型を通す
{
"compilerOptions": {
"types": ["vitest/globals"]
}
}