ふるてつのぶろぐ

福岡在住のエンジニアです。

写真提供:福岡市

Angular7 + Bootstrap4でWebアプリを作ろう(Bootstrap 4.2.1)

こんにちはふるてつです。 昨年の後半からしばらくAngularの活動をさぼっていましたが、今月からまた再開しました。

Angularのバージョンアップ

しばらくさわらなかった間にAngularのバージョンが 6 から 7 に上がりました。
今日はバージョンアップをしようとしていたのですが、Bootstrapで少し予想外のことがありました。
そのことを書いてみます。

結論

結果から先に書くと、Angularのバージョンを上げる前にnpm updateコマンドでライブラリを最新化したところ、Bootstrap 4.1.3 が Bootstrap 4.2.1にあがり、ドロップダウンやナビバーが軒並み動かなくなりました…
4.2.1 には issue がかなりある模様で、Bootstrapはしばらくバージョンを直接指定して、4.1.3 を使うことにしました。

今回やったこと

では今回何を実行したか順を追って書きます。

Angularのバージョン確認

Visual Studio Codeのターミナルでバージョンを確認しました。コマンドは下記。
ng --version

f:id:tetsufuru:20190207191251p:plain:w500

6.2.4でした。

使用しているライブラリを最新化

Angularのバージョンを上げる前に使用ライブラリを最新化。コマンドは下記。
npm update

動作確認

動作を確認しましたが、ナビバーやドロップダウンが全く動かなくなりました…
デバッグのコンソールには下記のメッセージがはき出されていました。

f:id:tetsufuru:20190209133941p:plain:w500

Angularのバージョンアップ

わたしは Angularをバージョンアップすればおさまると思い、Angularを 7 にバージョンアップしました。
下記のコマンドを実行しましたが、変化はありません。
コマンドの実行自体は簡単ですぐに終わりましたけれど。
ng update @angular/cli @angular/core

Bootstrap 4.2.1の不具合

エラーメッセージを頼りにネットで調べたところ、Bootstrap 4.2.1 の不具合(issue)とわかりました。

https://github.com/twbs/bootstrap/issues/27903#issuecomment-449600715

この不具合は「Closed」と書いてましたが結局修正済みなのか、英語で書いてあるのではっきりとわかりません。
そもそもissueが 270件もあるようなのでしばらく 4.1.3 を使うことにしました。

Bootstrap を4.1.3に戻す

package.jsonファイルのbootstrapの所でキャレット(^)をはずして、4.1.3に変更

f:id:tetsufuru:20190209140753p:plain:w500

変更前
"bootstrap": "^4.2.1",
変更後
"bootstrap": "4.1.3",

再度下記コマンド実行してライブラリを最新化
npm update

f:id:tetsufuru:20190209150043p:plain:w500

もとどおりナビバーやドロップダウンが動くようになりました。

今日の感想

今日は直接 Angular とは関係のないことを書きましたが、予想外の出来事でしたので記事にしてみました。
教訓としては「コンソールのエラーメッセージはよく見なさい」というところでしょうか。
あとGithubやStackoverflowなどの英語がもっと読めれば楽なのにと思う今日この頃でした。

では、お疲れ様でした。