Vite + React 起動時のエラー解決
問題の説明
Vite + Reactプロジェクトでnpm run dev
コマンドを実行した際、以下のエラーが発生するケースがあります:
✘ [ERROR] Expected identifier but found "import"
(define name):1:0:
1 │ import.meta.dirname
╵ ~~~~~~
エラーメッセージはimport.meta.dirname
、import.meta.filename
、import.meta.url
関連の構文エラーを示し、最終的にビルド失敗となります:
failed to load config from /path/to/vite.config.js
error when starting dev server:
Error: Build failed with 3 errors:
この問題はプロジェクトのフォルダ構造に関係なく発生します(例:frontend/backendの分離構成でも発生)。
根本原因
このエラーの主原因は:
esbuild
バージョン0.24.1に導入された変更- Viteが内部的に
import.meta
構文を処理する方法との非互換性 - Viteバージョン6.0.4以下での発現(最新版では修正済み)
注意
環境によっては自動インストールされるesbuild@0.24.1
がエラーのトリガーになります。
解決策
🚀 推奨解決策: Viteを最新版に更新
最も安全かつ恒久的な解決法はViteを6.0.5以上に更新することです:
npm install vite@latest
バージョン確認:
npm list vite
# vite@6.1.0 など6.0.5以上であることを確認
6.0.5以降のViteでは内部でesbuild
を安定版に固定する修正が施されています。
⏪ 代替策:esbuildのバージョンダウングレード
即時対応が必要な場合、依存関係にesbuild@0.24.0
を明示的に追加:
npm install --save-dev esbuild@0.24.0
package.json
に直接記載する場合:
"devDependencies": {
"esbuild": "0.24.0",
"vite": "^6.0.4"
}
🔒 依存関係の固定(追加対策)
プロジェクト全体で特定バージョンを強制する方法:
// package.json
{
"overrides": {
"esbuild": "0.24.0"
}
}
// package.json
{
"resolutions": {
"esbuild": "0.24.0"
}
}
// package.json
{
"pnpm": {
"overrides": {
"esbuild": "0.24.0"
}
}
}
操作手順の要約
npm install --save-dev esbuild@0.24.0
を実行package.json
でバージョン固定(任意)npm install
で依存関係再構築npm run dev
で正常起動を確認
技術的解説
エラーの本質はESモジュールのimport.meta
プロパティです:
esbuild@0.24.1
が特殊な環境でこの構文解析に失敗- Viteの設定読込(
vite.config.js
)時に発生 - 問題はesbuildリポジトリで#4010として追跡
降級後にエラーが解決する理由:
esbuild@0.24.0
にはバグ修正前の安定版実装が含まれる- Vite 6.0.5+では依存関係が適切に管理されている
予防対策
定期的な依存関係の更新:
bashnpm outdated # 古いパッケージをチェック npm update # 安全な範囲で更新
バージョニング戦略:
json// メジャーバージョン固定で急な破壊変更を回避 "devDependencies": { "vite": "~6.1.0" }
CI環境でのビルドテスト:
package-lock.json
をコミットし、常に同一バージョンを利用
非推奨な回避策
vite@^5
へのダウングレードは機能しますが、React 18やその他最新機能に制限が生じます:
npm install vite@5
長期的には最新版移行がベストプラクティスです。
結論
問題はesbuild
の特定バージョンとViteの互換性の問題です。恒久的な解決には:
- Viteを最新版に更新
- 緊急時は
esbuild@0.24.0
で一時対応 - 依存関係管理設定で再発防止
アップデート後、npm run dev
を再度実行すれば通常通り開発サーバーが起動します。