ViteのCJSビルド非推奨警告
背景
Vite 5では、Node APIのCommonJS(CJS)ビルドが非推奨となりました。vite build
実行時に下記警告が表示される場合、設定の変更が必要です。
bash
The CJS build of Vite's Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.
注意点
警告中に提案されるVITE_CJS_TRACE=true
の実行方法がOSにより異なります。誤った設定では下記エラーが発生します。
bash
VITE_CJS_TRACE' is not recognized as an internal or external command
根本原因
ViteがES Modules(ESM)をデフォルトとして推奨する方針に変更されました。CJS形式の設定ファイルが原因で警告が発生します。
推奨解決策
設定ファイルをESM形式に変更することで根本解決できます。
方法1: ファイル拡張子の変更
JavaScript使用時:
vite.config.js → vite.config.mjs
TypeScript使用時:
vite.config.ts → vite.config.mts
方法2: package.json の設定変更
json
{
"type": "module"
}
公式推奨
Vite公式ドキュメントでESMへの移行が明示されています。
応急措置: 警告発生源の特定
根本対策を実施するまでに警告源を調査する方法です。OSごとにコマンドが異なります。
Windows(PowerShell/Cmd)
json
{
"scripts": {
"build": "set \"VITE_CJS_TRACE=true\" && vite build"
}
}
Linux/macOS
json
{
"scripts": {
"build": "VITE_CJS_TRACE=true vite build"
}
}
重要ポイント
- 設定ファイルのリネーム(.mjs/.mts)が最適解
プロジェクト全体の互換性チェック不要で即時反映可能 type: "module"
設定は注意が必要
既存のCommonJSモジュールに依存する場合は非互換が発生する可能性あり- 応急措置は一時的な利用に留める
環境変数での回避は根本解決にならないため推奨されない
最終更新: 2024年1月確認(Vite 5.1系対象)
公式情報はトラブルシューティングガイドで随時確認してください。