📝

Homebrew でインストールした Volta で yarn 等が使えなくなった話

2022/05/01に公開

概要

node.js, npm, yarn 等の JavaScript のツールマネージャーの一つに Volta というものがあります.

Volta については下の記事を参考にしてください.

Volta - The Hassle-Free JavaScript Tool Manager

Node.jsのバージョン管理にVoltaを推したい

今回は,以前からふつうに使えていた 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/binls -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