インストールしているパッケージのアップデート作業をしているときに、あるパッケージ(A)と別のパッケージ(B)で使っている依存パッケージのバージョンに差があり、古いバージョンの依存パッケージを使っている B の方でエラーが出てしまっていました。
B のパッケージの方で依存パッケージを更新してくれれば一番いいのですが、今回はその気配もないので、B の問題が出ている依存パッケージのバージョンを古いバージョンで固定するというやり方で解決しました。
そのプロジェクトでは Yarn を使っているので resolutions フィールドを使います。
resolutions の書き方
package.json に以下のように書きます。
"resolutions": {
"b/hoge": "1.0.0",
}このように書くことで、B は依存パッケージ hoge の 1.0.0 を使うようになります。
今回僕がこの問題に当たってしまったのは babel 関係のパッケージだったのですが、パッケージアップデートの時によく依存パッケージバージョン問題は起きるので、もし同じような問題が起きた場合はお試しください。
ちなみに npm を使っている場合は overrides フィールドを使うようです。書き方も resolutions と少し違います。
同様の問題が起きた場合は、上記の方法をお試しください。
なお、Yarn のバージョンによって書き方が異なる可能性があるため、注意が必要です。詳細は公式ドキュメントを参照してください。