Jest v27 にアップデートすると、 Jest 実行時にエラーが出る
Snowpack の Issue #3398 (opens in a new tab) で報告されている通り、
React 向け Jest config 内で参照している Jest バージョンが古いため、実行時エラーになってしまう
● Test suite failed to run
TypeError: Cannot destructure property 'config' of 'cacheKeyOptions' as it is undefined.
at Object.getCacheKey (node_modules/babel-jest/build/index.js:217:14)
私が確認した環境では全てのテストで上記のエラーが出ていた
原因
- npm で配信されている Snowpack の最新版は v3.8.8(2022-01-22現在)
- Jest 利用時の config として推奨 (opens in a new tab)されている
@snowpack/app-scripts-react
は v2.0.1 が最新で、
最終リリースは2021-03頃 - 同一リポジトリで管理されている@snowpack/app-scripts-react (opens in a new tab)は v2.0.1 時点だと babel-jest v26.2.2 を参照している
- その後、f77639b (opens in a new tab)のコミットで Jest v27 対応が行われているが、リリースが行われておらず npm が更新されない
暫定対応
問題のパッケージをアンインストール
@snowpack/app-scripts-react
をアンインストール- Jest の config ファイルから require を削除して、transform など必要な箇所のみコピー
babelTransform.js
fileTransform.js
importMetaBabelPlugin.js
の3ファイルをコピーした
必要なパッケージを個別にインストール
下記のパッケージが不足した状態になるので追加インストールする
babel-jest
babel-preset-react-app
@snowpack/plugin-dotenv
Jest v27 にアップデートする
- @types/jest も合わせて v27 にアップデートする
動作確認
テストが成功することを確認する
npm test
Snowpack はもう開発してない?
2021年10月以降リリースも無く、コードもほとんど動いていない
今どんな状態なんだろうか・・・
CRAv5 + Vite が安定して動いているので鞍替えしようかな