こんにちは。
FRUITS ZIPPER の「NEW KAWAII」のちょいちょいダサい振り付けにハマっているはこだてたろうです。
ダサいんですが、なんか気になってしまいます。いい意味で、です。
さて、ハマった違いではありますが、Perplexity で Vite×React×TestingLibrary の環境を立ち上げましたが、設定でどうにも納得いかないところがあり、ハマっていました。

vite.config.ts
に Vitest の設定を組み込む場合、以下のように書きます。
import { defineConfig } from 'vitest/config'
import react from '@vitejs/plugin-react'
// https://vite.dev/config/
export default defineConfig({
plugins: [react()],
test: {
environment: 'jsdom',
globals: true,
setupFiles: './src/test/setup.ts',
}
})
しかし、どうも私の環境では 'test' does not exist in type 'UserConfigExport'
というコンパイルエラーが出てしまいます。
他の記事を参照すると「defineConfig
を vitest/config
からインポートせよ」だとか「トリプルスラッシュディレクティブで型補完せよ」といった情報が得られますが、それでは解決しませんでした。
前述の記事では、vite.config.ts
にテストの設定を入れるのをやめ、 vitest.config.ts
を作成する形で対応しました。
でも、できるはずなのにできないのがどうにも納得いかず気になってしまい、また少し調べてみました。
Vitest 2系が Vite 6系をサポートしていなかった
結論から言うと、バージョンのせいでした。
忙しい方のために、Vite 6系と Vitest 2系を使っている場合は Vite 5系にバージョンを落とすことでエラーが解消します。
上記のイシューに「複数のバージョンの Vite がインストールされている場合に起こる」という記述がありました。
npm explain vite
で依存関係を見てみたところ、たしかにvite@6.0.7
と vite@5.4.11
がインストールされていることが確認できました。
npm dedupe
で重複排除を行いましたが、依存関係は変わらず。
node_modules
を消してから npm install
をしても変わらず。
どうしたものかと調査を進めていると、別のイシューについたコメントに「Vite と Vitest の互換性を確認してね」「Vite の最新版使うなら Vitest は 3系じゃないとダメだよ」と書かれているのを発見しました。
Vitest の Release Note を見てみると、Vite 6系のサポートは Vitest 3系からで、Vitest 3系はまだベータ版である、ということがわかりました。
結局のところ、Vite 5系の最新である 5.4.11 にバージョンを落としてみたところ、'test' does not exist in type 'UserConfigExport'
のエラーはようやく解消されました。
AIにきくとき、新しい技術やアップデート直後は注意
Vite 6系のリリースは 2024年11月末とのことなので、ついこの間リリースされたようですね。
今回のようにアップデート直後のタイミングでは、Perplexityの生成するコードに即座に反映させることが難しい場合があります。
Perplexity に聞いてもエラーがどうにも解消しない場合、バージョンの問題がないか、一度確認してみましょう。
コメント