Help us understand the problem. What is going on with this article?

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

今回はここまで。

yukibe
2018年8月よりWebエンジニア。主にPHP。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした