2022-03-03

nodenv管理下で yarnコマンドを打った時「The `yarn` command exists in these Node versions:」と出た[M1Mac]

blogimg

背景

  • M1 Macの環境にyarnを入れていた
  • yarnは npm install -g yarn でインストールした
  • nodenvでnodeのバージョンを管理していた

どのような問題が起きたか

nodenvでバージョンをv14.17.4に変えてyarnをやろうとしたところ、

The `yarn` command exists in these Node versions: v16.13.0

と表示された。

つまりyarnコマンドがv16.13.0でしか実行できなかった。

なぜ起きたか

背景にもある通り、

M1 Macの環境構築時、Homebrewがyarn未対応だったためyarnをグローバルにインストールしてしまった。そのため、

$ which yarn
/Users/username/.anyenv/envs/nodenv/shims/yarn

となってしまっていた。

[結論]どう解決したか

shimsに入っているyarnを削除。

グローバルにインストールしたyarnをuninstall

$ npm uninstall -g yarn

さらに、

# shimを削除
$ rm -rf /Users/username/.anyenv/envs/nodenv/shims/yarn

さらに、

sudo rm -rf /Users/amanokokorotarou/.anyenv/envs/nodenv/versions/16.13.0/lib/node_modules/yarn/bin/yarn.js

をする。この状態でyarnを使いたいバージョンにnodenvで移動した上で

$ brew install yarn

これで各nodeでyarnを使えるようになった。

$ which yarn
/opt/homebrew/bin/yarn

結論に至る過程