Next.js10系でビルド時にterser-webpack-pluginがエラーになりビルドが失敗する際の対応
Next.js10系でビルド時にterser-webpack-pluginがエラーになりビルドが失敗する際の対応についてメモしました。
経緯
Nextで作成したアプリのバージョンを10へあげてproductionビルドを実行した際に
エラーになりビルドが通らなくなってしまったことがきっかけでした。
環境
- next 10.2.3
- node 14.15.3
発生したエラー
next buildを実施した際に'javascript' of undefinedというエラーが発生しました。
vbnet> Build error occurred
TypeError: Cannot read property 'javascript' of undefined
実行ログ
実行時の全体のログになります。
swift$ NODE_ENV=production next build src
info - Using webpack 4. Reason: custom webpack configuration in next.config.js https://nextjs.org/docs/messages/webpack5
production production
info - Checking validity of types
> Build error occurred
TypeError: Cannot read property 'javascript' of undefined
at /Users/XXXX/app/node_modules/terser-webpack-plugin/dist/index.js:607:38
at SyncHook.eval [as call] (eval at create (/Users/XXXX/app/node_modules/next/dist/compiled/webpack/bundle4.js:128905:10), <anonymous>:159:1)
at SyncHook.lazyCompileHook (/Users/XXXX/app/node_modules/next/dist/compiled/webpack/bundle4.js:128856:20)
at Compiler.newCompilation (/Users/XXXX/app/node_modules/next/dist/compiled/webpack/bundle4.js:74738:26)
at /Users/XXXX/app/node_modules/next/dist/compiled/webpack/bundle4.js:74774:29
at AsyncSeriesHook.eval [as callAsync] (eval at create (/Users/XXXX/app/node_modules/next/dist/compiled/webpack/bundle4.js:128919:10), <anonymous>:6:1)
at AsyncSeriesHook.lazyCompileHook (/Users/XXXX/app/node_modules/next/dist/compiled/webpack/bundle4.js:128856:20)
at Compiler.compile (/Users/XXXX/app/node_modules/next/dist/compiled/webpack/bundle4.js:74769:28)
at /Users/XXXX/app/node_modules/next/dist/compiled/webpack/bundle4.js:74428:11
at Compiler.readRecords (/Users/XXXX/app/node_modules/next/dist/compiled/webpack/bundle4.js:74636:11)
error Command failed with exit code 1.
エラーの原因について
エラーログの内容としてはjavascriptが見つからないため読み込めないというエラーで
アプリケーションのエラーではなくライブラリ関連のエラーのようです。
webpack5を利用する場合フラグの変更が必要
ビルド時のログと三勝先のドキュメントを確認するとNext.jsではWebpack4と5が併用されていてバージョン10.23でWebpack5を利用するためには フラグの変更が必要なことがわかりました。
rubyinfo - Using webpack 4. Reason: custom webpack configuration in next.config.js https://nextjs.org/docs/messages/webpack5
next.config.jsの設定を変更して解決
webpack5の設定をtrueへ変更
next.config.jsのwebpack5の設定をtrueへ変更して解決しました。
next.config.js
next.config.jsmodule.exports = {
future: { webpack5: true }
}
再度ビルドを実行して確認
再度next buildコマンドでビルドを実行して確認します。
scss$ NODE_ENV=production next build src
// 中略
λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
○ (Static) automatically rendered as static HTML (uses no initial props)
● (SSG) automatically generated as static HTML + JSON (uses getStaticProps)
(ISR) incremental static regeneration (uses revalidate in getStaticProps)
Done in 107.99s.
エラーが発生せず無事解決することができました。
代替案
今回はWebpack5でビルドする形で解決しましたが
Webpack4と互換しかないプラグインなど場合はバージョンのダウングレードが必要です。
tenserプラグインの場合下記のような形でインストールし直すことでも
エラーを解消することができました。
ruby$ yarn add -D terser-webpack-plugin@4.2.3
その他
Next.js10.2系ではwebpack4がデフォルト
現在のNext.js10.2系では後方互換を保つためにwebpack4がデフォルトとなっているため
Webpack関連のライブラリは4と互換のものを利用するか
今回のようにWebpack5の設定をtrueへ変更する対応が必要になりそうです。
Next.js11系はWebpack5がデフォルト
Next.js11以降はデフォルトでwebpack5が有効になるようです。
参考文献
articleNext.js でドキュメントポータル:MDX/全文検索/バージョン切替の設計例
articleNext.js でインフィニットスクロールを実装:Route Handlers +`use` で滑らかデータ読込
articleRedis 使い方:Next.js で Cache-Tag と再検証を実装(Edge/Node 両対応)
articleNext.js の RSC 境界設計:Client Components を最小化する責務分離戦略
articleNext.js ルーティング早見表:セグメント・グループ・オプションの一枚まとめ
articleNext.js × pnpm/Turborepo 初期構築:ワークスペース・共有パッケージ・CI 最適化
articleTurbopack と Webpack の違いを徹底比較
articleNext.js10系でビルド時にterser-webpack-pluginがエラーになりビルドが失敗する際の対応
article【設定方法】ionic6のreactでwebpackの設定を変更する(webpack.configの上書き)
articleNode.js で ESM の `ERR_MODULE_NOT_FOUND` を解く:解決策総当たりチェックリスト
articleNode.js 本番メモリ運用:ヒープ/外部メモリ/リーク検知の継続監視
articleNode.js で社内 RPA:Playwright でブラウザ自動化&失敗回復の流儀
articleNode.js × Fastify で爆速 REST API:スキーマ駆動とプラグイン設計を学ぶ
articleNode.js クリーンアーキテクチャ実践:アダプタ/ユースケース/エンティティの分離
articlehtmx × Express/Node.js 高速セットアップ:テンプレ・部分テンプレ構成の定石
articleWebRTC が「connecting」のまま進まない:ICE 失敗を 5 分で切り分ける手順
articleWeb Components が “is not a constructor” で落ちる時:定義順序と複数登録の衝突を解決
articleVitest モジュールモック技術の基礎と応用:`vi.mock` / `vi.spyOn` を極める
articleVue.js リアクティビティ内部解剖:Proxy/ref/computed を図で読み解く
articleVite CSS HMR が反映されない時のチェックリスト:PostCSS/Modules/Cache 編
articleTailwind CSS 2025 年ロードマップ総ざらい:新機能・互換性・移行の見取り図
blogiPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
blogGoogleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
blog【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
blogGoogleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
blogPixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
blogフロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
review今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
reviewついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
review愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
review週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
review新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
review科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来