viteプロダクションビルド後に「require is not defined」というエラーが発生する解決方法


関数が使用されているためです。ViteはデフォルトでESモジュールをサポートしており、CommonJSモジュールのrequire関数は直接利用できません。

このエラーを解決するには、いくつかのアプローチがあります。以下に、いくつかのシンプルで簡単な方法とコード例を示します。

  1. esbuild-plugin-commonjsを使用する:

    • esbuild-plugin-commonjsは、CommonJSモジュールをESモジュールに変換するためのプラグインです。
    • まず、プロジェクトの依存関係にesbuild-plugin-commonjsを追加します。
      npm install esbuild-plugin-commonjs --save-dev
    • Viteのvite.config.jsファイルを開き、以下のようにプラグインを設定します。
      import { defineConfig } from 'vite';
      import { esbuildCommonjs } from 'esbuild-plugin-commonjs';
      export default defineConfig({
      plugins: [
       esbuildCommonjs() // esbuild-plugin-commonjsを追加
      ]
      });
    • これにより、ビルド時にCommonJSモジュールがESモジュールに変換され、require関数のエラーが解消されます。
  2. @rollup/plugin-commonjsを使用する:

    • もう1つの方法は、@rollup/plugin-commonjsを使用する方法です。
    • まず、プロジェクトの依存関係に@rollup/plugin-commonjsを追加します。
      npm install @rollup/plugin-commonjs --save-dev
    • Viteのvite.config.jsファイルを開き、以下のようにプラグインを設定します。
      import { defineConfig } from 'vite';
      import commonjs from '@rollup/plugin-commonjs';
      export default defineConfig({
      plugins: [
       commonjs() // @rollup/plugin-commonjsを追加
      ]
      });
    • これにより、ビルド時にCommonJSモジュールがESモジュールに変換され、require関数のエラーが解消されます。