Ionic 4から５にアップグレードする際に、発生した問題を紹介（Angular）

#はじめに
Ionic4から５にアップグレードした時に、すんなりと問題なく終わる人の方が少ないのではないだろうか？:sweat:

当然僕も謎の問題に直面して、困惑した野郎どもの一人である。。

##注意点:no_mouth:
この記事はあくまで「直面した問題を紹介する記事」なので、解決策を詳しく紹介している訳ではありません！
**色々なコマンドを試しすぎて、正直「このエラーの解決策はこれ！」と断言できるような、有力な情報ではありません。**

##アップグレード前の環境

```console
Ionic:

   Ionic CLI                     : 6.7.0 (/usr/local/lib/node_modules/@ionic/cli)
   Ionic Framework               : @ionic/angular 5.1.0
   @angular-devkit/build-angular : 0.901.4
   @angular-devkit/schematics    : 8.1.3
   @angular/cli                  : 8.1.3
   @ionic/angular-toolkit        : 2.2.0

Capacitor:

   Capacitor CLI   : 1.2.0
   @capacitor/core : 1.2.0

Cordova:

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms : none
   Cordova Plugins   : no whitelisted plugins (0 plugins total)

Utility:

   cordova-res (update available: 0.14.0) : 0.6.0
   native-run (update available: 1.0.0)   : 0.2.8

System:

   NodeJS : v10.15.1 (/usr/local/bin/node)
   npm    : 6.12.1
   OS     : macOS Mojave
   Xcode  : Xcode 11.2.1 Build version 11B500
```


#参考にしたサイト
まず、僕が参考にしたサイトは下記の３つ（特に２つ目を中心に進めた）

[[翻訳]Ionic5がやってきた。Gifアニメーションつきで最新のWebモバイルUIフレームワークを紹介！](https://note.com/rdlabo/n/n321f3d0c9b68)

[Upgrading existing Ionic 4.x app to Ionic 5.x](https://coderjony.com/blogs/upgrading-existing-ionic-4x-app-to-ionic-5x/)

[Upgrade Ionic 4 to Ionic 5 (Angular)](https://medium.com/@grantbrits/upgrade-ionic-4-to-ionic-5-angular-76514079fb2a)


#エラー１
[Upgrade Ionic 4 to Ionic 5 (Angular)](https://medium.com/@grantbrits/upgrade-ionic-4-to-ionic-5-angular-76514079fb2a)
このページで紹介されてるコマンドを実行した時に発生

```console
ng update @angular/cli@8 @angular/core@8 --allow-dirty
```

```console
Repository is not clean.  Update changes will be mixed with pre-existing changes.
Using package manager: 'npm'
Collecting installed dependencies...
Found 50 dependencies.
Fetching dependency metadata from registry...
                  Package "@angular-devkit/build-angular" has an incompatible peer dependency to "@angular/compiler-cli" (requires ">=9.0.0 < 10" (extended), would install "8.2.14").
                  Package "@angular-devkit/build-angular" has an incompatible peer dependency to "typescript" (requires ">=3.6 < 3.9", would install "3.5.3").
Incompatible peer dependencies found.
Peer dependency warnings when installing dependencies means that those dependencies might not work correctly together.
You can use the '--force' option to ignore incompatible peer dependencies and instead address these warnings later.
```

はい、意味不明！

#エラー２

```console
ng update @angular/core @angular/cli --allow-dirty
```


```console
Your global Angular CLI version (9.1.4) is greater than your local
version (8.1.3). The local Angular CLI version is used.

To disable this warning use "ng config -g cli.warnings.versionMismatch false".
Repository is not clean.  Update changes will be mixed with pre-existing changes.
Using package manager: 'npm'
Collecting installed dependencies...
Found 51 dependencies.
Fetching dependency metadata from registry...
                  Package "@angular/platform-browser" has a missing peer dependency of "@angular/animations" @ "9.1.4".
Incompatible peer dependencies found.
Peer dependency warnings when installing dependencies means that those dependencies might not work correctly together.
You can use the '--force' option to ignore incompatible peer dependencies and instead address these warnings later.
```

グローバルの`Angular CLI`とローカルの`Angular CLI`が違うってのはわかるけど、どうしろと言うのだw？

#エラー３

```console
ng update @angular/cli
```

```console
Your global Angular CLI version (9.1.4) is greater than your local
version (8.1.3). The local Angular CLI version is used.

To disable this warning use "ng config -g cli.warnings.versionMismatch false".
Repository is not clean.  Please commit or stash any changes before updating.
```

#うまく動いてくれたコマンド　その１
```console
npm install --save-dev @angular/cli@latest
```

[こちら](https://stackoverrun.com/ja/q/12232511)を参考に、ずーっと下の:point_down:エラーが出てたのに、こいつでなぜかうまくいった。。。

```console
Your global Angular CLI version (9.1.4) is greater than your local
version (8.1.3). The local Angular CLI version is used.

To disable this warning use "ng config -g cli.warnings.versionMismatch false".
Repository is not clean.  Please commit or stash any changes before updating.
```

このコマンドを実行することで、`@angular/cli `の数値が変わった！

```console
Ionic:

   Ionic CLI                     : 6.7.0 (/usr/local/lib/node_modules/@ionic/cli)
   Ionic Framework               : @ionic/angular 5.1.0
   @angular-devkit/build-angular : 0.901.4
   @angular-devkit/schematics    : 8.1.3
   @angular/cli                  : 9.1.4
   @ionic/angular-toolkit        : 2.2.0
```

#うまく動いてくれたコマンド　その２
```console
ng update @angular/cli @angular/core --allow-dirty
```

```console
Repository is not clean. Please commit or stash any changes before updating.
```


上記`ng update`のコマンド時に発生したこのエラー。

[こちら](https://github.com/angular/angular-cli/issues/14600)を参考にして`--allow-dirty`をつけることで、無事に実行された。


#最後に
諦めずに色々なコマンドを試してみましょう！
**僕は色々試しすぎて、どのコマンドを試したか全く覚えていません。。。**