yarn global add でインストールしたコマンドが実行できなかった場合の対処


yarn global add で、インストール成功したのに、実行しようとしたら「そんなコマンドはない!」って怒られたときの対処方法です。

症状

$ yarn global add n
yarn global v1.21.1
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "[email protected]" with binaries:
      - n
Done in 0.35s.

$ n
n: command not found

調査

インストールパッケージ一覧

$ yarn global list --depth=0
yarn global v1.21.1
info "[email protected]" has binaries:
   - n
Done in 0.10s.

インストールされている!

binの場所

$ yarn global bin
/home/seya/.yarn/bin

PATHの確認

$ echo $PATH
/home/seya/.vscode-server/bin/c47d83b293181d9be64f27ff093689e8e7aed054/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/ProgramData/DockerDesktop/version-bin:/mnt/c/Program Files/Docker/Docker/Resources/bin:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/dotnet/:/mnt/c/Program Files (x86)/Nodist/bin:/mnt/c/Program Files (x86)/Google/Cloud SDK/google-cloud-sdk/bin:/mnt/c/Program Files/PuTTY/:/mnt/c/Users/seya.DORASU/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/seya.DORASU/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Users/seya.DORASU/AppData/Local/Programs/Microsoft VS Code Insiders/bin:/mnt/c/Program Files/heroku/bin:/mnt/c/Program Files (x86)/sox-14.4.2:/mnt/c/Program Files:/snap/bin

(WSL上で実行しているので、Windowsのパスがいっぱい!)

/home/seya/.yarn/bin
はPATHにない!!!!

対処方法

yarn global add でインストーるされる場所に、PATHが通っていあないので、コマンドが無いと怒られていたらしい。

対処方法としては2つ
1. PATHを追加
2. yarnでインストールされる場所を変更する

今回は、すでにnコマンドをインストールしているので、PATHを追加する方法を試してみます。

PATHを追加

~/.bashrc に、以下の行を追加します。

export PATH="$HOME/.yarn/bin:$PATH"

bashを再度立ち上げて、確認。

$ echo $PATH
/home/seya/.yarn/bin:/home/seya/.vscode-server/bin/c47d83b293181d9be64f27ff093689e8e7aed054/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/ProgramData/DockerDesktop/version-bin:/mnt/c/Program Files/Docker/Docker/Resources/bin:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/dotnet/:/mnt/c/Program Files (x86)/Nodist/bin:/mnt/c/Program Files (x86)/Google/Cloud SDK/google-cloud-sdk/bin:/mnt/c/Program Files/PuTTY/:/mnt/c/Users/seya.DORASU/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/seya.DORASU/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Users/seya.DORASU/AppData/Local/Programs/Microsoft VS Code Insiders/bin:/mnt/c/Program Files/heroku/bin:/mnt/c/Program Files (x86)/sox-14.4.2:/mnt/c/Program Files:/snap/bin

/home/seya/.yarn/bin が最初に追加されています。

確認

コマンドの場所確認

$ which n
/home/seya/.yarn/bin/n

ちゃんとパスが通っているようです。

コマンド実行

$ n --lts
12.16.1

実行できました!!!