Skip to content

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"
  }
}

重要ポイント

  1. 設定ファイルのリネーム(.mjs/.mts)が最適解
    プロジェクト全体の互換性チェック不要で即時反映可能
  2. type: "module" 設定は注意が必要
    既存のCommonJSモジュールに依存する場合は非互換が発生する可能性あり
  3. 応急措置は一時的な利用に留める
    環境変数での回避は根本解決にならないため推奨されない

最終更新: 2024年1月確認(Vite 5.1系対象)
公式情報はトラブルシューティングガイドで随時確認してください。