以前の記事で、anyenvのパスを通しました。ですがここに書かれた状況のままで、Googleのfirebase-toolsをインストールしようとしたら”-bash: firebase: command not found”と言って叱られたのでそのときの対処方法をメモっておきます。
状況の確認
$ ndenv versions v4.3.0 v4.3.1 * v4.7.0 (set by /Users/MYUSERNAME/.anyenv/envs/ndenv/version) v8.11.3
以前はanyenvのndenvを使って、Node.jsのv4.7.0を使っていました。
ndenvコマンドによるバージョンの切り換え
$ ndenv global v8.11.3 v4.3.0 v4.3.1 v4.7.0 * v8.11.3 (set by /Users/MYUSERNAME/.anyenv/envs/ndenv/version) $ node -v v8.11.3
firebase-toolsを使うにあたってv8.11.3にしたかったので、ndenvにglobalオプションをつけて使用するNode.jsのバージョンを変更しました。
-bash: firebase: command not foundの表示
$ sudo npm install -g firebase-tools /Users/MYUSERNAME/.anyenv/envs/ndenv/versions/v8.11.3/bin/firebase -> /Users/MYUSERNAME/.anyenv/envs/ndenv/versions/v8.11.3/lib/node_modules/firebase-tools/bin/firebase + firebase-tools@4.0.1 updated 1 package in 16.983s /Users/MYUSERNAME/.anyenv/envs/ndenv/versions/v8.11.3/bin ndenvを使ってv4.7.0からv8.11.3に切り換えただけで、npm(Node Package Manager)を使ってfirebase-toolsをインストールしました。 $ firebase -V -bash: firebase: command not found
ですが、実際にfirebaseコマンドを叩くと、「そんなコマンドはない」と指摘されます。
解決方法
ここまでの状況を確認すると、エラーが発生する原因は、“/Users/MYUSERNAME/.anyenv/envs/ndenv/versions/v8.11.3/bin”にfirebase-toolsのパスが通っていないことにあるようです。
従前のパスの設定
$ echo $PATH ... OLDPWD=/Users/HiroshiFukui/.anyenv/envs/ndenv/versions/v8.11.3/bin $ view ~/.bash_profile #!/bash/profile export PATH=$HOME/.anyenv/bin:$PATH eval "$(anyenv init -)"
.anyenvに関するパスは、.bash_profileで設定しています。中身を確認すると”$HOME/.anyenv/bin”までしか通っていません。
firebase-toolsを通すための設定
$ cp ~/.bash_profile ~/.bash_profile.org $ vi ~/.bash_profile #!/bash/profile export PATH=$HOME/.anyenv/envs/ndenv/versions/v8.11.3/bin:$PATH eval "$(anyenv init -)" :wq
元の設定ファイルを”.bash_profile.org”として残しつつ、.anyenvのディレクトリの中でどこまでパスを通すのか、詳細に記述します。今回のケースでは、Node.jsのv8.11.3を使いますので、v8.11.3までパスを通すことを明らかにします。
再インストールと確認
$ sudo npm install -g firebase-tools ... $ firebase -V 4.0.2 $ which firebase /Users/HiroshiFukui/.anyenv/envs/ndenv/shims/firebase
再度、npmを使ってfirebase-toolsがインストールします。npmコマンドを実行すると途中でずらずらとメッセージが出てきました。ただそのメッセージが出力された後に、firebaseコマンドを実行するとバージョンが出力されます。またwhichコマンドを使ってfirebase-toolsのコマンドを確認すると、パスは通っている様子が分かります。