2022-03-03
nodenv管理下で yarnコマンドを打った時「The `yarn` command exists in these Node versions:」と出た[M1Mac]
背景
- 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