Open3

webpackerのエラー解決までの道筋

naonao

エラー文

ruby C:\src\hoge>rails webpacker:compile Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead. Compiling...

ruby Compilation failed: C:\src\hoge\node_modules\babel-loader\lib\cache.js:22 const findCacheDirP = import("find-cache-dir"); TypeError: Invalid host defined options at Object.<anonymous> (C:\src\hoge\node_modules\babel-loader\lib\cache.js:22:23) at Module._compile (C:\src\hoge\node_modules\v8-compile-cache\v8-compile-cache.js:194:30) ... Node.js v18.17.1

node_modules\babel-loader\lib\cache.js:22

ruby 存在する場合は `npm i --save-dev @types/find-cache-dir` を試すか、`declare module 'find-cache-dir';` を含む新しい宣言 (.d.ts) ファイルを追加します

概要

rails webpacker:compileをするとエラーが発生し、コンパイルエラーが出る。

webpackerはフロントエンドを一括管理しているフロントエンドビルドパッケージである。

npm i --save-dev @types/find-cache-dir

コンパイルに失敗している理由は 【仮説】

babel-loaderのcache.jsで、import("find-cache-dir");が上手く読めていないこと。
バージョンが原因じゃないかという仮説を立てている。
あるいはエラー内容で、宣言をしないといけない。。

  • babel-loader, webpacker, node.js あたりのバージョン相違があるのでは

やること 【検証】

  • このバージョンを変える必要が本当にあるかを調べる
  • babel-loaderを調べる

調査

  • Webpacker::Manifest::MissingEntryError in~ でエラーをこいている人は多いけど原因はかなり多様性に及ぶ
  • 原因はやはり自分のエラー文を見て、それについてクリティカルに解消していく必要がありそう
naonao

仮説

エラー文を見ると、import findCacheDirectory from 'find-cache-dir';でエラー起きてる。
find-cache-dirはnpmライブラリ。

  • find-cache-dirを入れなおすか。

これを見るに
https://qiita.com/koh97222/items/c46d1ef2a63b92bb6c15
Reactの記事だけどnpmのエラーは一緒。
原因はサポートバージョンの相違

naonao

仮説

  • webpackerバージョン相違
元は

"@rails/webpacker": "4.2.2", "turbolinks": "^5.2.0"

"@rails/webpacker": "5.4.4", "turbolinks": "^5.2.0", "webpack": "4.46.0", "webpack-cli": "3.3.12"

@rails/webpackerバージョンが違うため、バージョンを元に戻してみる。