yarnは`package.json`という名前のディレクトリがあるとエラーになる


発生するエラー

~ ❯❯❯ yarn help
yarn info v1.21.1
Error: EISDIR: illegal operation on a directory, read
    at Object.readSync (fs.js:498:3)
    at tryReadSync (fs.js:332:20)
    at Object.readFileSync (fs.js:369:19)

再現手順

cd $HOME
mkdir package.json
yarn help
# => Error: EISDIR: illegal operation on a directory, read
#     at Object.readSync (fs.js:498:3)
#     at tryReadSync (fs.js:332:20)
#     at Object.readFileSync (fs.js:369:19)

原因

  • package.json は常にファイルであると想定して動くため

なんでpackage.jsonという名前のディレクトリを作ってしまったか

docker run -w /root --rm -v `pwd`/package.json:/tmp -it --entrypoint /bin/sh node:10.15.1

volumeマウントはディレクトリのみでファイルはNGというのを理解せずにdocker run -vを実行しホストOS側に作ってしまっていた