npm install -g XXXX で command not foundが起きた…

あるあるなのかよくわからないですが、npmで落としたnode_moduleが見つからないことがあったりします。 今回の対処方法をハックに残しておきます。

問題の発端

以下のように公式通りにコマンドを叩いて、firebase にログインしようとした。

$ npm i -g firebase-tools
$ firebase login 

けど、ログイン出来ないじゃん。。。

$ firebase login 
-bash: firebase: command not found

 解決方法

まず、どこに落とされているかを確認。とりあえず、以下のコマンドでnpmがモジュールを落としている場所とモジュールがどこに落ちているか確認。

$ npm bin -g
/usr/local/bin/
$ which module_name
/usr/local/bin/module_name

Homebrew系で恐らく殆どの人はnodeをインストールすると思うので、これが以上のように基本的には/usr/local/binの下にもろもろ置かれるはず。。。自分の場合は、npm bin -g が自分の意図しない所にパスが通っていた。その原因は、npmのprefixの値だった。 以下で、確認できる。

$ npm -g prefix 
/usr/local/Cellar/......

よって、以下のようにprefixを書き換えた。

$ npm set prefix "/usr/local" 

こうしたあとで再度インストールし直すことで、ちゃんとパスが通るようになった。