表題の通りのメモです。時間が解決してくれると思いますが、ひとまずメモ。
(AngularJS 1.x系 + Restabgular利用での環境になります。また、20160125時点です)
起きたこと
- Restangularを使っているAngularJSベースのアプリケーション
- 2016年はじめまでは問題なかった
- 1月半ばに新規の環境でbower install後動かそうとしたら、画面がちゃんと表示されない...
- JavaScriptのコンソールを見ると、「TypeError: _.contains is not a function」なメッセージが出ている
なぜ?
- Restangularが依存するlodashに4.0.0へのバージョンアップがあったため
- lodashバージョンアップについての日本語での記事
- 2016-01-13のJS: jQuery 2.2、lodash 4.0.0、IE8サポート終了
- 関連Issue: Lodash 4.0 TypeError: _.contains is not a function
underscore.jsとの統合も検討しているそうで、関数のリネームや統廃合があった模様。
現在、廃止になった関数の置き換えのPull Requestが出ているので、そちらが組み込まれれば問題は解決すると思われます。(2016/01/25時点では未だ)
ひとまず対策
restangular/issues/1294 にある通りに、まずはlodashのバージョンを明示して4.0xを利用しないようにしました。
bower uninstall restangular
bower uninstall lodash
bower install --save lodash#3.10.1
bower install --save restangular
さて、実際のところ、わたしはlodashが何のために使われているか把握していなかったのですが、Restangularの処理に必要だったということで、勉強になりました...。
現在出ているPull Requestは こちら になります。
廃止された _contains という関数は、includes という関数のエイリアスだったので、そちらを向けば大丈夫のようです。
覚え書き
これからもちょこちょこありそう。
JS周りは修行中の身ですが、自分でちゃんと情報をキャッチしていかないといけませんね...