Node.jsのバージョンアップ for Mac

Macで動いているNode開発環境を最新状態にするための方法です。
(いつも忘れちゃうので、書き留めておこうと思います。)

手順は以下のとおりです。
　1. 各種ツールの最新バージョンを確認する。
　2. 各種ツールを最新にする。

# 各種ツール最新（安定）バージョンを確認する。
私の環境は、`Homebrew`で作ったので、以下のものを確認します。
(2020/5/1時点の情報です。)

- Homebrew
- Nodebrew
- Node.js

## Homebrew:
`Homebrew`のバーション情報は、**[こちら](https://github.com/Homebrew/brew/releases)** から確認できます。
<img width="450" alt="Bildschirmfoto_2020-05-01_um_18_38_50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626057/90c7461f-f337-3fa8-cc9b-de2ebe210e84.png">

私の環境は、ちょっと古いですね。

```javascript:Homebrew
   > brew -v
     Homebrew 2.0.0
     Homebrew/homebrew-core (git revision 0b1c; last commit 2019-02-04)
     Homebrew/homebrew-cask (git revision 1e6e6; last commit 2019-02-05)
```

## Nodebrew:
`Nodebrew`のバージョン情報は、**[こちら](https://formulae.brew.sh/formula/nodebrew)** から確認できます。
<img width="450" alt="Bildschirmfoto_2020-05-01_um_19_15_35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626057/e2149f56-86a0-c037-2dac-6410e078cc03.png">

私の環境は、これも古い、、、（そりゃそうか。）

```javascript:nodebrew
   > nodebrew -v
     nodebrew 0.9.7
```

## Node.js:
`Node.js`のバージョン情報は、**[こちら](https://nodejs.org/en/download/)** から確認できます。
<img width="450" alt="Bildschirmfoto_2020-05-01_um_18_14_45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626057/92be39ea-ed79-0c19-bc5b-7c1e57f6cedb.png">

これも、古いですね。

```javascript:node.js
   > node -v
     v10.16.0
```

***

# 各種ツールを最新にする。
先ほどのステップで確認した各種ツールを最新にします。

## Homebrew:
`brew update`コマンドでアップデートします。

```javascript:Homebrew
   > brew update
    // しばらく時間かかっても、気長に待つ、、、、

   > brew -v
     Homebrew 2.2.14
     Homebrew/homebrew-core (git revision b303d; last commit 2020-05-01)
     Homebrew/homebrew-cask (git revision 90c68; last commit 2020-05-01)
```

## Nodebrew:
`brew upgrade nodebrew`コマンドでアップデートします。

```javascript:nodebrew
   > brew upgrade nodebrew

   > nodebrew -v
     nodebrew 1.0.1
```

## Node.js:
Node.jsは、`nodebrew`を使って、アップデートします。
まずは、インストールできるバージョンの確認です。

```javascript
   > nodebrew ls-remote
   // バージョンがずらりと並びます。

   v12.0.0   v12.1.0   v12.2.0   v12.3.0   v12.3.1   v12.4.0   v12.5.0   
   v12.6.0   v12.7.0   v12.8.0   v12.8.1   v12.9.0   v12.9.1   v12.10.0  
   v12.11.0  v12.11.1  v12.12.0  v12.13.0  v12.13.1  v12.14.0  v12.14.1  
   v12.15.0  v12.16.0  v12.16.1  v12.16.2  v12.16.3

   v13.0.0   v13.0.1   v13.1.0   v13.2.0   v13.3.0   v13.4.0   v13.5.0   
   v13.6.0   v13.7.0   v13.8.0   v13.9.0   v13.10.0  v13.10.1  v13.11.0  
   v13.12.0  v13.13.0  v13.14.0
```

先ほど調べた、安定版：`v12.16.3` でアップデートします。

```javascript
   > nodebrew install-binary v12.16.3

   //インストールが始まります。
   Fetching: https://nodejs.org/dist/v12.16.3/node-v12.16.3-darwin-x64.tar.gz
   ######################################################################## 100,0%

   // しばらく待つと、完了します。
   Installed successfully
```

利用可能なバージョンをリスト表示し、使用するバージョンを指定します。

```javascript
   > nodebrew list
     v10.16.0
     v12.16.3

   > nodebrew use v12.16.3
     use v12.16.3
```

最後にバージョンを確認します。

```javascript
   > nodebrew ls
   v12.16.3

   current: v12.16.3
```

ついでに、nodeのバージョンも確認しておきましょう。

```javascript
   > node -v
     v12.16.3
```

以上で、最新バージョンに更新されました。

ちなみに、`nodebrew` でインストールしたモジュールは、以下のディレクトリにインストールされています。

>/Users/[ユーザー名]/.nodebrew

このディレクトリにある `current`というシンボリックリンクで、今使っているバージョンを判別しています。

 > current -> /Users/[ユーザー名]/.nodebrew/node/v12.16.3

# よくあるエラー対処法

## その1: `node -v`でエラーが発生する。
`node -v` コマンドを実行した時、下記のようなエラーが発生する場合があります。
`.bash_profile`の設定が正しくできていないことが原因です。

```javascript
   > node -v
     -bash: node: command not found
```

その時の対処法を以下に記載します。

 **1. `.bash_profile`にPATHを設定します。**

```common-lisp
   vi ~/.bash_profile

   //以下の行を記述する
   export PATH=$HOME/.nodebrew/current/bin:$PATH
```

 **2. `.bash_profile`を有効化します。**

```common-lisp
   source ~/.bash_profile
```
<br>

## その2: `node -v`で表示されるバージョンが異なる。
`node -v` コマンドを実行した時、`nodebrew use` で指定したものと異なるバージョンが表示されることがあります。

```javascript
   > node -v
     v10.16.0
```

nodebrewのインストールの仕様が変わった、過去に別の方法で、Node.jsをインストールしたなど、いくつか原因は考えられます。

そんな時は、まず`nodebrew`でインストールされた`node`モジュールを探します。
`mdfind` コマンドを使うと便利です。

```javascript
   > mdfind v12.16.3 -name

     /usr/local/var/nodebrew/src/v12.16.3
     /usr/local/var/nodebrew/src/v12.16.3/node-v12.16.3-darwin-x64.tar.gz
     /usr/local/var/nodebrew/node/v12.16.3
```
`usr/local/var/nodebrew/node/v12.16.3` にインストールされていることがわかります。

このディレクトリの`node`を利用するためには、モジュールがインストールされたPATHに、`current`のシンボリックリンクを作成します。

```common-lisp
   cd /Users/[ユーザー名]/.nodebrew
   ln -s /usr/local/var/nodebrew/node/v12.16.3 current
```
これで、`use` で指定したバージョンが使えるようになります。

```javascript
   > node -v
     v12.16.3
```

Macの Node.js環境をバージョンアップする方法の説明は、以上で終わりです。

<br>
<br>