created: 2019-04-27T03:38:51.000Z
circleci上でjest-watch-typeaheadがロードできずエラーになる場合
前提
以下の場合だと(たぶん) circleci上でテストをするとき問題になる
- create-react-app で作業している
- yarn reject 済み
こんなエラー
circleci上でこんな感じにてテストが落ちる
#!/bin/bash -eo pipefail
cd ./functions/viewer/client && \
$(npm bin)/jest
● Validation Error:
Module /Users/sakamossan/.ghq/github.com/functions/viewer/client/node_modules/jest-watch-typeahead/filename.js in the watchPlugins option was not found.
<rootDir> is: /home/circleci/project/functions/viewer/client
Configuration Documentation:
https://jestjs.io/docs/configuration.html
問題
- package.jsonのjest.watchPluginsの設定が絶対パスになっている
- jestの設定は
<rootDir>
という変数みたいなのが使えるが、watchPluginsではこれが使えない - ローカルでは絶対パスで正しいが、circleci上ではそれだとダメ
対応
watchPluginsはパスを探すときnode_modules配下を探してくれるので、 node_modules配下の相対パスを記述すれば読んでくれた
{
"jest": {
"watchPlugins": [
"jest-watch-typeahead/filename",
"jest-watch-typeahead/testname"
]
}
}
これはもともとのドキュメントにも書いてある書き方
所感
create-react-app/reject のあれがちょっとアレでしたね、というところ