circleciで「error Couldn’t find a package.json file in “xxx/xxx”」が発生した場合の原因と対処方法
circleciでビルド中に以下のようなエラーが発生した場合の原因と対処方法についてまとめました。
#!/bin/bash -eo pipefail
yarn build
yarn run v1.22.4
error Couldn't find a package.json file in "/xxx/xxx"
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Exited with code exit status 1
CircleCI received exit code 1
エラー原因:作業ディレクトリが指定されていない
reactなどで開発している場合であれば、npmやyarnでbuildコマンドを実行しますが、package.jsonが存在するディレクトリで実行されていない場合は「package.json」が見つからず「error Couldn’t find a package.json」エラーが発生します。
gitのルートディレクトリに「package.json」がある場合には、特に何も指定しなくても大丈夫なのですが、以下のようなフォルダ構成を取っている場合は作業ディレクトリを指定する必要があります。
gitのrootディレクトリ
├─.circleci
│ └─config.yml
└─app
├─xxx.js
├─package.json
└─yarn.lock
対策:working_directoryで作業ディレクトリを指定する
circleciのymlファイルではworking_directoryで作業ディレクトリ指定できます。
各ステップにも指定できますが、以下のようにrun要素にも指定できます。
- run:
name: Build Project
command: yarn build
working_directory: app
これで、appフォルダのpackage.jsonが読み取ることができるため、buildできるようになります。