Beeeat’s log

Beeeat’s log

プログラミングで出くわした知識やツール、日常生活、働き方その他色々なことをメモしていくブログ

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.0v8.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 コマンドで少し詰まったことについてまとめてみた.暫定対応の方法を都度都度実施すれば良いが,こういう手間は塵も積もれば山となるので,こういう小さい手間はこれからもドンドン省いて,少しでも生産性を上げていく.