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
は常にファイルであると想定して動くため-
yarn info
などは カレントディレクトリのpackage.json
を読みにいき、見つけたらそのままfs.ReadFyleSync()
に渡してる - https://github.com/yarnpkg/yarn/blob/master/src/cli/index.js#L471-L475
- ファイルなら渡すとかにしてくれるとよかったのだが。。。
-
なんで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側に作ってしまっていた
Author And Source
この問題について(yarnは`package.json`という名前のディレクトリがあるとエラーになる), 我々は、より多くの情報をここで見つけました https://qiita.com/sakymark/items/e784ca939ebb4fae4266著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .