[Rails6]Webpacker::Manifest::MissingEntryErrorの対処法4選

# Webpackerのエラーで確認すること

### 1) Webpackerがインストールされているか

確認方法としては`bundler install`が通るかで確認できます。
インストールされていなければ以下が表示されます。

```ruby:ターミナル(EC2)
# ローカルではbundle installコマンド
[ec2-user@ip-XXX-XX-XX-XXX リポジトリ名]$ bundler install

...
         run  bundle exec spring binstub --all
* bin/rake: Spring inserted
* bin/rails: Spring inserted
       rails   :install

Yarn not installed. 
Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/


https://yarnpkg.com/ja/docs/install
```

**解決方法**としてはインストールしてあげればOK

```ruby:ターミナル
~ $ rails webpacker:install
```

結果が以下のように出たら**yarn**がインストールされていないので次の項目を実行します。

```ruby:ターミナル
$ rails webpacker:install

# 「yarn がインストールされていない」と怒られている
Yarn not installed. 
Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/
```

### 2)yarnがインストールされているか

まずは確認してみましょう。

```ruby:ターミナル
$ yarn -v

Command 'yarn' not found, but can be installed with:
sudo apt install cmdtest
```

正しくバージョンが出力されたらインストールされていますが、上記のような場合はインストールしてあげましょう。
>yarnのインストールはOSごとに違うので[公式のドキュメント](https://classic.yarnpkg.com/ja/docs/install#mac-stable)を参考にしてみてください。

```ruby:ターミナル
# mac の場合
$ brew install yarn
```

インストールができたら`yarn -v`でバージョンを確認しましょう。
正しくインストールができていたら、最後に`yarn install`を実行します。

```ruby:ターミナル

$ yarn install

yarn install v1.17.3
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 3.36s.
```

### 3)node_modules がインストールされているか

yaranがインストールされている環境でrails6のアプリを`git clone`したときなどに起こります。

```ruby:ターミナル
$ rails s # または、rails db:migrate など

error Couldn't find an integrity file                                                                                                     
error Found 1 errors.                                                                                                                     


========================================
  Your Yarn packages are out of date!
  Please run `yarn install --check-files` to update.
========================================


To disable this check, please change `check_yarn_integrity`
to `false` in your webpacker config file (config/webpacker.yml).
```

**解決方法**としては`yarn install`を実行して、package.jsonにリスト化されているすべての依存関係をnode_modules内にインストールします。

これについは何言っているかさっぱりという方もいると思うので（主に自分(笑)）、公式のドキュメントを参考にしてみてください。

>[yarn installの解説（公式ドキュメント）](https://classic.yarnpkg.com/ja/docs/cli/install/)

### 4) パッケージのバージョンが一致しているか

これは`rails new`で作成したRails6アプリで起きるみたいです。

```ruby:ターミナル
$ yarn install
...

# ----------

$ rails s
...

========================================
  Your Yarn packages are out of date!
  Please run `yarn install --check-files` to update.
========================================


To disable this check, please change `check_yarn_integrity`
to `false` in your webpacker config file (config/webpacker.yml).


yarn check v1.6.0
success Folder in sync.
Done in 0.10s.
yarn check v1.6.0
error "webpack-dev-server#yargs#cliui" is wrong version: expected "^4.0.0", got "5.0.0"
error "webpack-dev-server#yargs#yargs-parser" is wrong version: expected "^11.1.1", got "13.1.1"
error Found 2 errors.
info Visit https://yarnpkg.com/en/docs/cli/check for documentation about this command.
```

**解決方法**としては、まずメッセージに従ってコマンドを実行しましょう。

```ruby:ターミナル
$ yarn install --check-files

$ yarn install

$ yarn upgrade
```

**これで解決しない場合は`yarn upgrade`を実行してみると解決する**ことがあるようです。

```ruby:ターミナル
# mac の場合
$ brew upgrade yarn

==> Upgrading 1 outdated package:
yarn 1.6.0 -> 1.17.3
==> Upgrading yarn 
...

# ----------

$ yarn upgrade
yarn upgrade v1.17.3

[1/4] 🔍  Resolving packages...
warning @rails/webpacker > postcss-preset-env > postcss-color-functional-notation > postcss-values-parser > flatten@1.0.2: I wrote this module a very long time ago; you should use something else.
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning " > webpack-dev-server@3.8.0" has unmet peer dependency "webpack@^4.0.0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.0" has unmet peer dependency "webpack@^4.0.0".
[4/4] 🔨  Rebuilding all packages...
success Saved lockfile.
success Saved 673 new dependencies.
info Direct dependencies
...
✨  Done in 42.59s.

# ----------

$ rails s

# => エラー解決
```

ということでWebpacker周りのエラーについてでした。
この辺は自分も全然わからないので、とりあえずまとめるだけでもしてみました。
参考になれば幸いです。

# 参考文献

[【Rails6】Webpacker::Manifest::MissingEntryErrorが出たときの対処法](https://qiita.com/masatwork/items/1b5d190cc76f5eeffbb7)

[Rails6 開発時につまづきそうな webpacker, yarn 関係のエラーと解決方法](https://qiita.com/NaokiIshimura/items/8203f74f8dfd5f6b87a0)

EC2にDockerを組み込んでいる人は参考になるかも?
[EC2 ✕ Docker・docker-composeによる手動デプロイ・アセットコンパイル](https://qiita.com/sc30gsw/items/ef618030a0aa538e28e0)