3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

react-isのバージョンには要注意

Posted at

react-isのバージョン管理に失敗して、いろいろなトラブルに巻き込まれてしまいました。

TL; DR

  • react-isのバージョンは、reactのバージョンと一致させる必要あり
  • ただし、自動では保証されない
  • yarnでバージョンダウンを行うのは、想像以上に面倒

react-isって?

自分の記事で以前に触れましたが、あるオブジェクトが「Reactのコンポーネントかどうか」、そして「どのような種類のコンポーネントか」を、オブジェクトの内部構造に直接触らずに判定できるツール群です。

トラブルの状況

React 16.9からdeprecatedの警告が強化されて、ライブラリとして入れているコンポーネントまで警告されるようになってしまったので、いったんreactraect-dom"^16.8.6 <16.9.0"で止めることにしました。一方で、react-isは何の条件もかけずに放置していたら、16.12.0ぐらいまで上がっていました。

その結果、React.memoしたコンポーネントの判定ができない状態に陥ってしまいました。いろいろ調べるうちに、reactreact-isのバージョンの違いが問題だと思いあたりました。特にpeerDependencyなどもかかっていなかったので、ずれても何も警告されませんでした。

戻すのも一苦労

ということで、package.json"react-is": "^16.8.6 <16.9.0"と条件を明記して再インストールしたのですが、すでに16.12.0が入っていて、しかもprop-typesなどreact-isに依存したライブラリがほかにもあったために、依存したライブラリには16.12.0が別途で入ってしまうという、ものすごく面倒な事態に陥ってしまいました。

yarn upgradeを行っても解決せず、結局「yarn.lockの直接書き換え」「node_modulesの全消去」など強引な手段をとって、どうにか全部を16.8.6に統一することに成功しました。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?