yarn コマンドで「The `yarn' command exists in these Node versions:」と表示された場合の対応
yarn を npm(今回の場合は,ndenv で Node.js インストールしている) でインストールしている状態で,yarn コマンドを実行すると,以下のように yarn がインストールされた Node.js にバージョンを変えるように案内され,yarn コマンドを使うことができない時がある.
$ node --version v12.16.1 $ yarn --version ndenv: yarn: command not found The `yarn' command exists in these Node versions: v8.12.0 v8.5.0
暫定対応
暫定対応としては npm で管理している yarn を削除すれば 使えるようになる.まずは,yarn がインストールされているディレクトリを確認する.
確認後,そのディレクトリをrm
コマンドで削除をすれば,yarn コマンドを使うことができる.
$ which yarn /Users/ユーザ名/.anyenv/envs/ndenv/shims/yarn $ rm -rf /Users/ユーザ名/.anyenv/envs/ndenv/shims/yarn $ yarn --version 1.21.1
恒久対応
これで yarn コマンドが使えるようになったが,yarn init
など普段通りにyarn を使っていると yarn コマンドのディレクトリがまた/Users/ユーザ名/.anyenv/envs/ndenv/shims/yarn
となるため,また,rm
コマンドで削除する必要になってしまう.
そのため,都度都度この作業をしないようにするためには,yarn は npm で管理しているものではなく,Homebrew などのパッケージ管理ツールで管理しているものを使うようにすれば良い.
Homebrew で yarn をインストールする方法はこちら. classic.yarnpkg.com
そのため,今回の場合はv8.12.0
とv8.5.0
に yarn がインストールされているため,これらのバージョンにインストールされている yarn をアンインストールすれば良い.
$ ndenv global v8.12.0 $ npm uninstall -g yarn removed 1 package in 0.163s $ ndenv global v8.5.0 $ npm uninstall -g yarn removed 1 package in 0.145s
一旦ターミナルを再起動し,yarn がインストールされたディレクトリが Homebrew でインストールされたディレクトリになっていればOK
$ which yarn /usr/local/bin/yarn
まとめと所感
今回は yarn コマンドで少し詰まったことについてまとめてみた.暫定対応の方法を都度都度実施すれば良いが,こういう手間は塵も積もれば山となるので,こういう小さい手間はこれからもドンドン省いて,少しでも生産性を上げていく.