Edited at

nodebrewでNode.jsをインストールする。

More than 1 year has passed since last update.


最近のJavaScript

以前、プログラミングスクールでjQueryを少し学んでいたが、当時はJavaScriptの基礎文法も覚えずに使用していたため、全く身につかなかった。

最近サーバーサイドでLaravelを使用しているが、やはりフロントサイドについても学び直しが必要だと感じた。ので、現在はJavaScriptの独習に努めている。

そしてLaravelでJavaScriptを使用することを考えた時、ネットで調べたら様々な選択肢というか用語が出てきた。それはここに簡記しておく。(サイトによっては、ライブラリの部分がフレームワークと表記されている箇所もある。)


jQuery

JavaScriptのライブラリ。JavaScriptを簡単に記述する仕組みを提供している。


React

JavaScriptのライブラリ。Facebookが開発している。


Vue.js

JavaScriptのライブラリ。 ビューに特化している。


AngularJS

JavaScriptのフレームワーク。Googleが開発している。大規模開発向け。


Node.js

サーバーサイドで動くJavaScript。Expressなどのフレームワークも存在する。今回はフロントサイドとしてJavaScriptを使用したいので、直接使用はしないと思う。


npm

Node.jsのパッケージ管理システムNode.jsのインストール時に、一緒にインストールされる。


nodebrew

(npmを含む)Node.jsのバージョン管理システムHomebrewでインストールできる。


結論

JavaScriptのライブラリを使いたい時、npm、要はNode.jsのインストールが前提条件になることが多いと判明した。(ちなみに、CDNという仕組みを利用する方法もある。これはnpmのインストールが不要である。)

そのため、今回は下準備として以下の作業を行うことにした。(まだ使用するライブラリは決めていないが・・・)


  • Homebrewでnodebrewをインストールする。

  • nodebrewを使用して(npmを含む)Node.jsをインストールする。


nodebrewのインストール

今回はこちらのサイト様を参考にした。

Node.jsをMacにインストール!(Homebrew→Nodebrew→Node.js順にインストール)

早速、Homebrewでnodebrewをインストールする。

$ brew install nodebrew

Updating Homebrew...
# 省略
==> Caveats
You need to manually run setup_dirs to create directories required by nodebrew:
/usr/local/opt/nodebrew/bin/nodebrew setup_dirs

Add path:
export PATH=$HOME/.nodebrew/current/bin:$PATH

To use Homebrew's directories rather than ~/.nodebrew add to your profile:
export NODEBREW_ROOT=/usr/local/var/nodebrew

Bash completion has been installed to:
/usr/local/etc/bash_completion.d

zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> Summary
🍺 /usr/local/Cellar/nodebrew/1.0.0: 8 files, 38.4KB, built in 4 seconds

メッセージ内のAdd path:にある環境変数を追記し、反映させる。そしてnodebrewの場所を確認する。

しかし、環境変数の設定については、後にnodeコマンド実行時に詰むことになる・・・(最後に解決方法を説明する。)

$ echo "export PATH=$HOME/.nodebrew/current/bin:$PATH" >> ~/.bash_profile

$ source ~/.bash_profile

$ which nodebrew

/usr/local/bin/nodebrew

setupコマンドを行わないとNode.jsのインストールができないので、必ず実行する。

$ nodebrew setup

Fetching nodebrew...
Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

その他のコマンド確認はこちらから。

$ nodebrew -help


Node.jsのインストール


既存のNode.jsをアンインストールする

インストールの前に、既にNode.jsがインストールされていないか確認する。

$ which node

/usr/local/bin/node
$ node -v
v9.11.1
$ npm -v
5.6.0

全く記憶に無いのだが、以前Homebrewでインストールしていたようだ。

$ brew list node

/usr/local/Cellar/node/9.11.1/bin/node
/usr/local/Cellar/node/9.11.1/etc/bash_completion.d/npm
/usr/local/Cellar/node/9.11.1/include/node/ (136 files)
/usr/local/Cellar/node/9.11.1/lib/dtrace/node.d
/usr/local/Cellar/node/9.11.1/libexec/bin/ (2 files)
/usr/local/Cellar/node/9.11.1/libexec/lib/ (4973 files)
/usr/local/Cellar/node/9.11.1/share/doc/ (3 files)
/usr/local/Cellar/node/9.11.1/share/man/man1/node.1
/usr/local/Cellar/node/9.11.1/share/systemtap/tapset/node.stp

HomebrewでインストールしたNode.jsは、アンインストールする。

$ brew uninstall node

そしたらこのようなエラーメッセージが。どうやらherokuと依存関係にあるようだ。

Error: Refusing to uninstall /usr/local/Cellar/node/9.11.1

because it is required by heroku, which is currently installed.
You can override this and force removal with:
brew uninstall --ignore-dependencies node

--ignore-dependenciesオプションを付けて再度コマンドを実行する。

$ brew uninstall --ignore-dependencies node

さらにメッセージが。バージョン9.4.0が残っているようだ。

Uninstalling /usr/local/Cellar/node/9.11.1... (5,125 files, 49.7MB)

node 9.4.0 1 is still installed.
Remove all versions with `brew uninstall --force node`.

今度は--forceオプションを付けてコマンドを実行する。

$ brew uninstall --force node

Uninstalling node... (5,125 files, 49.7MB)

これでアンインストールは完了した。


nodebrewでインストールする

現在nodebrewでインストールできるNode.jsのバージョンは、以下のコマンドで確認できる。

$ nodebrew ls-all

インストール時にstableを指定すれば、自動的に安定版がインストールされる。もし最新版を手に入れたい時は、latestを指定する。

今回は安定版をインストールしたいので、以下のコマンドを実行する。

$ nodebrew install-binary stable

Fetching: https://nodejs.org/dist/v10.1.0/node-v10.1.0-darwin-x64.tar.gz
######################################################################## 100.0%
Installed successfully

2018年5月13日現在、バージョン10.1.0がインストールされた。

さらに使用するバージョンを指定する。仮にインストールされているバージョンが1つだけでも、このuseコマンドは実行しなければならない。

$ nodebrew use stable

use v10.1.0

場所を確認する。

$ which node

/Users/ユーザー名/.nodebrew/current/bin/node
$ which npm
/Users/ユーザー名/.nodebrew/current/bin/npm

バージョンを確認する。nodeコマンドが通らない。何故だろうか?

$ node -v

-bash: /usr/local/bin/node: No such file or directory
$ npm -v
5.6.0


環境変数を再確認する

nodeコマンドを実行した時のエラーメッセージ-bash: /usr/local/bin/node: No such file or directoryを見る限り、nodeを探す場所を間違えて指定しているようだ。

現在の.bash_profileを確認する。先ほど行ったnodebrewの環境変数の追加では、単純にexport文が追記されただけだった。

# 既存のexport文 

export PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$HOME/bin:$HOME/.composer/vendor/bin

eval "$(rbenv init -)"
if [ -f ~/.bashrc ]; then
~/.bashrc
fi

# 追記されたexport文
export PATH=/Users/ユーザー名/.nodebrew/current/bin:/Users/ユーザー名/.rbenv/shims:既存の$PATH

これを以下のように修正した。(編集にはエディターを使用した。)以前にも記事にしたが、export文の追記方法はちょっとややこしいと思う。

.bash_profile追記時のホームディレクトリの表示について

export PATH=$HOME/.nodebrew/current/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$HOME/bin:$HOME/.composer/vendor/bin

eval "$(rbenv init -)"
if [ -f ~/.bashrc ]; then
~/.bashrc
fi

こちらも忘れずに実行する。

source ~/.bash_profile

再チャレンジ。今度はうまくいった。export文の呼び出し順(もとい位置?)が原因だったようだ。

しかし、何故npmコマンドだけは通ったのだろうか・・・?

$ node -v

v10.1.0

今回はここまで。