WindowsのVS CodeのClaude CodeからVitestが動かなかったメモ
はじめに
普段Macで開発していて何の問題もなかったのですが、Windowsマシンに環境を移したところ、VS CodeのClaude Code拡張からVitestを実行すると謎のエラーで全テストが失敗するようになりました。
同じ問題で困っている方がいるかもしれないので、メモとして書き残しておきます。もっと良い解決策をご存知の方がいらっしゃったら、教えてくだされば 🙏
何が起きたか
Error: Vitest failed to find the runner. This is a bug in Vitest. Please, open an issue with reproduction.
4|
5| // Cleanup after each test
6| afterEach(() => {
| ^
7| cleanup()
8| })
Claude Code経由でテストを実行すると、こんなエラーが出て全テストが失敗します。
ちなみにWindowsのPowerShellやcmdから直接実行すると普通に動くんですよね...。Claude Code経由だけがダメという。
環境
- Windows 11
- VS Code + Claude Code拡張
- Vitest 4.0.16
- Node.js 24.x
原因(たぶん)
調べてみた感じ、Claude Code拡張が内部でGit Bash(MSYS/MINGW環境)を使っているようで、これとVitest 4の組み合わせに互換性問題があるっぽいです。
確証はないですが...。
試したけどダメだったこと
いろいろ試してみましたが、全滅でした。
| 対策 | 結果 |
|---|---|
pool: 'forks' |
❌ |
globals: true |
❌ |
sequence.hooks: 'list' |
❌ |
NO_COLOR=1 環境変数 |
文字化けは直るけど❌ |
MSYS_NO_PATHCONV=1 |
❌ |
afterEach の明示的インポート(最初から実装済み) |
❌ |
Stack OverflowやGitHub Issuesで見つけた対策を片っ端から試しましたが、何やってもダメでした。
Vitest 3へのダウングレードも試みましたが、Storybook等がVitest 4を要求するので依存関係が崩壊して断念しました。
回避策
根本解決ではないのですが、PowerShellでテストを実行して、結果をファイルに吐き出し、それをClaude Codeに読んでもらう運用にしました。
$env:NO_COLOR=1; npm run test:unit > test-results.txt 2>&1
NO_COLOR=1 はANSIカラーコードを無効化して、ファイル出力時の文字化けを防ぐためです。
Claude Codeはファイル読み取りは問題ないので、テスト結果の分析やエラー修正の提案は普通にお願いできます。ちょっと手間ですが、現状これで凌いでいます。
おわりに
Macでは全く問題なかったので、Windows + Claude Codeという組み合わせ限定の問題だと思います。
あまりスマートな解決策ではないですが、同じ問題で詰まっている方の参考になれば幸いです。
2026/01/10 追記
その後の調査で、package.jsonで定義されたスクリプト経由(npm run testなど)では正常にテストが実行できることが分かりました。
つまり:
- ❌ Claude Code経由で直接Vitest実行 → エラー
- ✅
npm run testなど → 正常動作
これにより、PowerShellで結果をファイルに出力する回避策よりも、単純にpackage.jsonで定義されたスクリプトを使う方が楽かもしれません。
根本原因はやはりClaude Code拡張が使用しているシェル環境とVitest 4の互換性問題のようですが、npm scripts経由であれば問題なく動作します。
Discussion