herokuへデプロイする際のWebpaker::Manifest::MissingEntryErrorというエラーの対処法まとめ


1. 開発環境の情報

  • 開発環境 : Docker
  • 本番環境 : heroku
  • Gemfileの内容
    • ruby 2.7.3
    • rails 6.1.3
    • webpacker 5.4

2. エラー内容

エラーの内容は, herokuへデプロイ後にアプリを開こうとすると「Webpacker::Manifest::MissingEntryError in StaticPages#home」と表示されて表示することができない状況

引っかかっている原因のコードは <%= javascript_pack_tag 'application', 'data-turbolinks-track':'reload' %>

また、heroku logs --tailでherokuのログを確認したところアプリのビルドはできている模様。

  • スクショ

  • 翻訳前の画面

Webpacker can't find application.js in /myapp/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:
{
}
  • 翻訳後の画面
webpackerは/myapp/public/packs/manifest.jsonの中でapplication.jsを見つけることができません

可能性のある原因:
1. あなたが'webpack -w'かwebpack-deb-serverを使用しているのではない限り, webpacker.ymlのcompileの値を環境に合わせてtrueに設定してください。
2. webpackはアップデートを反映するための再実行がまだされていない
3. あなたは webpackerのconfig/webpacker.ymlファイルの設定が間違っています
4. あなたのwebpackの設定はmanifestを作っていません

あなたのmanifestが含んでいるもの:
{
}

現時点でできること

  • ローカル環境では普通に動く。
    • つまりwebpack-deb-serverは動く
  • javascript pack tagをapplication.html.erbから排除すると、トップページが表示される。しかし、javascriptが効いていないのか、ローカル時と異なる挙動をする

3. エラーに関係する記事と解決方法まとめ

  • 自分の場合 herokuにプッシュするブランチをトピックブランチではなくマスターブランチに変更したら, 何故か動いた(原因不明)。
git push heroku <branch_name>:master
↓
git push heroku master

デプロイ関連の記事

webpacker関連の記事