Homebrew でインストールした Volta で yarn 等が使えなくなった話
概要
node.js, npm, yarn 等の JavaScript のツールマネージャーの一つに Volta というものがあります.
Volta については下の記事を参考にしてください.
Volta - The Hassle-Free JavaScript Tool Manager
今回は,以前からふつうに使えていた yarn
コマンドが急に使えなくなって困ったという話です.
結論としては,下のコマンド
$ volta setup
2022/08/13 fix:
yarn setup
からvolta setup
と変更しました.
で解決したので,記事にするほどでもないと思ったのですが,備忘録として記録しておきます.
環境
macOS
$ sw_vers
ProductName: macOS
ProductVersion: 12.3.1
BuildVersion: 21E258
Homebrew
$ brew --version
Homebrew 3.4.7
Homebrew/homebrew-core (git revision e0bdda4fa89; last commit 2022-04-18)
Homebrew/homebrew-cask (git revision 918028378a; last commit 2022-04-19)
Volta
$ which volta
/opt/homebrew/bin/volta
$ volta --version
1.0.6
問題内容
今日はあるスクリプトを実行しようと思って, yarn のバージョンを確認しようと yarn --version
を実行しようとしたのですが,次のようになってしまいました.
画像:
コード:
$ yarn --version
zsh: command not found: yarn
どうして!?この間まで普通に使えていたのに...
試しに node, npm も確認してみましたが,同じように zsh: command not found
と出てしまいました.もちろん, which yarn
としても何も返ってきませんでした.
私は node.js や yarn 等を volta から使っているので, volta のバージョンも確認してみました.
画像:
コード:
$ volta --version
1.0.6
こっちは普通にパスが通っているようです.
次に,全体のパスを確認してみました.
画像:
一番下のパスが $VOLTA_HOME/bin
に該当するものです.ここのパスは通っているようです.
$VOLTA_HOME/bin
の中身を確認してみました
画像:
コード:
$ ls $VOLTA_HOME/bin
node npm npx yarn
ここに node, yarn 等があるので,ふつうはエラーを起こさないと思うのですが...
原因
最後に確認した $VOLTA_HOME/bin
を ls -l
で詳しく見てみました.
(画像は撮り忘れてました...)
コード:
$ ls -l $VOLTA_HOME/bin
total 0
lrwxr-xr-x 1 reiya staff 47 5 1 12:49 node -> /opt/homebrew/Cellar/volta/1.0.5/bin/volta-shim
lrwxr-xr-x 1 reiya staff 47 5 1 12:49 npm -> /opt/homebrew/Cellar/volta/1.0.5/bin/volta-shim
lrwxr-xr-x 1 reiya staff 47 5 1 12:49 npx -> /opt/homebrew/Cellar/volta/1.0.5/bin/volta-shim
lrwxr-xr-x 1 reiya staff 47 5 1 12:49 yarn -> /opt/homebrew/Cellar/volta/1.0.5/bin/volta-shim
注意して見てみると,リンク先のパスが /opt/homebrew/Cellar/volta/1.0.5/bin/volta-shim
となっています.
すなわち, volta のバージョン 1.0.5 のパスにリンクしています.
これは,以前は volta の 1.0.5 のものを使っていて普通に使えていましたが, volta が Homebrew から自動でアップデートされて volta 1.0.6 となった結果, $VOLTA_HOME/bin
内のリンクは更新されずバージョンの不一致が生じてしまった,ということです.
解決方法
この原因を解決するには,$VOLTA_HOME/bin
内のリンクを更新すればOKです.
これは次のコマンドでできるようです.
画像:
コード:
$ volta setup
success: Setup complete. Open a new terminal to start using Volta!
リンクが更新されていることを確認します.
画像:
コード:
$ ls -l $VOLTA_HOME/bin
total 0
lrwxr-xr-x 1 reiya staff 47 5 1 13:28 node -> /opt/homebrew/Cellar/volta/1.0.6/bin/volta-shim
lrwxr-xr-x 1 reiya staff 47 5 1 13:28 npm -> /opt/homebrew/Cellar/volta/1.0.6/bin/volta-shim
lrwxr-xr-x 1 reiya staff 47 5 1 13:28 npx -> /opt/homebrew/Cellar/volta/1.0.6/bin/volta-shim
lrwxr-xr-x 1 reiya staff 47 5 1 13:28 yarn -> /opt/homebrew/Cellar/volta/1.0.6/bin/volta-shim
きちんと更新されていることがわかります.
そして,肝心のコマンドたちも使えるようになっていました!
画像:
コード:
$ node --version
v18.0.0
$ yarn --version
1.22.18
$ npm --version
8.8.0
これで一見落着です!
結論
Homebrew からインストールした Volta で,急に yarn
コマンドなどが使えなくなったら, volta setup
をしましょう!
最後まで見ていただきありがとうございました.
Discussion