<Ruby on Rails エラー編> Webpacker::Manifest::MissingEntryError
rails6でrails sをしたところ、以下のエラーが発生した。
Webpacker::Manifest::MissingEntryError Tasks#index # エラー発生場所 application.html.slim = javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' Webpacker can't find application.js in D:/ROR/blog/public/packs/manifest.json. Possible causes: 1. You want to set webpacker.yml value of compile to true for your environment unless you are using the `webpack -w` or the webpack-dev-server. 2. webpack has not yet re-run to reflect updates. 3. You have misconfigured Webpacker's config/webpacker.yml file. 4. Your webpack configuration is not creating a manifest. Your manifest contains: { }
原因:javascript_pack_tagで読み込もうとしている対象のJavaScriptのマニフェストがない
講師によると、
Rails6ではJavaScriptのパッケージマネージャをyarnで管理するようになったので、
yarn add @rails/webpacker
でマニフェストファイル作成用のwebpackerをインストール対象に追加して、インストールしてファイルが作成されてエラーが解消されたという形になりますね。
yarn addを実行すると、package.jsonというJavaScriptのパッケージ(ソースコード、プログラムの集合)一覧にwebpackerの記載が追記されたかと思います。
Rails5系では、上記のような対応はデフォルトでは必要ないので、Rails6系特有の環境設定作業だった、ということになります。
とのこと。
ちなみに私の場合こちらを試したら解決。
Webpacker can't find application.js in D:/ROR/blog/public/packs/manifest.json in Ruby on Rails 6.1 · Issue #2825 · rails/webpacker · GitHub
こちらで解決できた方もいるらしい。
webpack - Rails Webpacker compile error on Production enviorment - Stack Overflow