STUDY MEMO

勉強した内容をアウトプットしていきます。

<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