👋
【Docker】Webpacker::Manifest::MissingEntryError の解消方法【Rails】
直面したエラー
自分がgitにアップしているrailsアプリのリポジトリををクローンして、
Dockerにアップしてみようとdocker-compose upまで行い、
サーバーを起動してみると以下のエラーが発生しておりました。
Webpacker::Manifest::MissingEntryError in Devise::Sessions#new
//中略//
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.
以下読み解いていきます。
原因解明
まずお決まりのDeepLにて翻訳すると、
Devise::Sessions#newでWebpacker::Manifest::MissingEntryErrorが発生する。
- webpacker.ymlのcompileの値は、あなたの環境に合わせてtrueに設定したい。
webpack -w` または webpack-dev-server を使用している場合を除きます。- webpack はまだアップデートを反映するために再実行されていません。
- Webpacker の config/webpacker.yml ファイルを間違って設定した。
- Webpack の設定がマニフェストを作成していない。
すこしわかりづらいがwebpacker周りで問題がある様子。
ググってみると以下の記事を発見
→https://yumishin.com/webpacker-error/
この記事はDocker環境ではないようだが、記事を読むと、
Webpacker.ymlがないことが原因。
Webpackerのインストールとコンパイルを行えばOK~
とのこと。
記事のようにターミナルで
##ターミナル
rails webpacker:install
rails webpacker:compile
を行うもエラーは続く。。。(compose upしなおしてもエラーでした)
もう少し詰めることに。
結論
結局ぐぐり続けていると以下の記事を発見
→https://my-programing-study.hatenablog.com/entry/2019/09/13/160609
どうやらdocker-compose.ymlにwebpackerがコンパイルするよう記述しなければいけないみたい。
以下をdocker-compose.ymlに追加
##docker-compose.yml
webpacker:
build: .
command: bundle exec bin/webpack-dev-server
volumes:
- .:/favorite_spot
ports:
- "8000:8000"
これで作成済みのdockerのcontainerを削除してから
##ターミナル
docker-compose build --no-cache
docker-compose up
を実行しサーバーを立ち上げるとエラーが解消!
まとめると
1,Webpacker.ymlがないことが原因
2,それを作成するには、docker-compose.ymlにコンパイルに関する記述をしなければならない
Discussion