webpackerのエラー解決までの道筋
エラー文
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~ でエラーをこいている人は多いけど原因はかなり多様性に及ぶ
- 原因はやはり自分のエラー文を見て、それについてクリティカルに解消していく必要がありそう
仮説
エラー文を見ると、import findCacheDirectory from 'find-cache-dir';
でエラー起きてる。
find-cache-dirはnpmライブラリ。
- find-cache-dirを入れなおすか。
これを見るに
原因はサポートバージョンの相違
仮説
- 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"