1
0

More than 3 years have passed since last update.

Webpacker::Manifest::MissingEntryError in 〇〇エラーに詰まった時の話

Posted at
Showing /myapp/app/views/layouts/application.html.erb where line #20 raised:

Webpacker can't find application 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:
{

application.html.erbの20行目

 <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

開発環境でだけページを開こうとすると上記のエラーが出る。

環境

Dockerを使用しており、本番環境ではruby:2.6.6-alpine3.11のイメージを、開発環境ではruby:2.6.6のイメージを使用していた。(本当は開発環境と本番環境でイメージ変えるのよくないとのこと。)

原因

開発環境用のDockerfile


FROM ruby:2.6.6

RUN apt-get update && apt-get install -y  yarn \
...

本番環境用のDockerfile


FROM ruby:2.6.6-alpine3.11

RUN apk --no-cache add yarn \
...

yarnのインストールについて上記のように記載していたが、イメージによってデフォルトでインストールされるバージョンが決まっているっぽい??(特に指定しなければどのOSでも最新のものが入ると思っていた)
それぞれのコンテナでバージョンを確認すると違うyarnがインストールされているようで、開発環境では

ERROR: There are no scenarios; must have at least one.となっていてnodejsもインストールできてなさそうだった。

解決策

(OS名) to (パッケージ名)等で検索して公式のダウンロード方法を調べる

今回参考にさせていただいた記事
Debian/Ubuntuにnodejsとyarnをinstall
パッケージマネージャを利用した Node.js のインストール

公式のDebian と Ubuntu ベースの Linux ディストリビューション、エンタープライズ Linux/Fedora と Snap パッケージ部分を参考にする。→Node.js 公式のバイナリディストリビューションのリンクが貼ってあるので遷移。

Node.js v14.x:

# Using Debian, as root
curl -fsSL https://deb.nodesource.com/setup_12.x | bash -
apt-get install -y nodejs

この部分をDockerfileに記載する。

↓最終的にDockerfileはこんな感じに

RUN curl -fsSL https://deb.nodesource.com/setup_14.x | bash - 
RUN apt-get update && apt-get install -y  nodejs 
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y  yarn

それでもエラーが解消されない

ビルドしなおしたのに

Webpacker::Manifest::MissingEntryError

上記のエラーが出る。

# yarn -v    
1.22.5
# node -v 
v12.22.1 

バージョン確認するとnodejsとyarnはちゃんと入ってそう。

解決策

どうやらwebpackerがインストールされていないっぽい。rails webpacker:installを実行すると解決。

余談

このコマンドrails webpacker:installが必要になったのは上でだけで開発環境上でだけで、ステージング本番環境共にwebpackerをインストールしなくてもエラーは出いない様子...。なぜかわかる方いらっしゃれば教えてもらえると助かります。。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0