Node.jsをアップデートしてみる(備忘録)

<h1>問題</h1>
UdemyでRubyonRailsの学習を始めようと思ったら、
まずはMacで動いているNode開発環境を最新状態にする必要があるとのこと。

<h2>Homebrew</h2>
Homebrewの最新バージョンはこちらから確認できます↓
https://github.com/Homebrew/brew/releases

2021/12/13時点でのHomebrewの最新バージョンは3.3.7
![スクリーンショット 2021-12-13 20.11.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2384947/18bfaa4f-8a90-4a17-9d65-65c59e7fc6b0.png)

私の環境でのHomebrewのバージョンは2.6.1

```title:Homebrew
% brew -v Homebrew 2.6.1
Homebrew/homebrew-core (git revision d21e8d; last commit 2020-12-12)
Homebrew/homebrew-cask (git revision 2810c; last commit 2020-12-12)
```

アップデートする必要があります。


<h2>Nodebrew</h2>
次はNodebrew

Nodebrewの最新バージョンはこちらから確認できます↓
https://formulae.brew.sh/formula/nodebrew

2021/12/13時点でのNodebrewの最新バージョンは1.1.0
![スクリーンショット 2021-12-13 20.17.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2384947/f80c47da-0ed5-7854-456f-406d8a5914d7.png)

私の環境でのNodebrewのバージョンは1.0.1

```title:Nodebrew
% nodebrew -v nodebrew 1.0.1
```

こちらもアップデートする必要がありますね。

<h2>Node.js</h2>
最後にNode.jsです

Node.jsの最新バージョンはこちらから確認できます↓
https://nodejs.org/en/download/

2021/12/13時点でのNode.jsの最新バージョンは16.13.1
![スクリーンショット 2021-12-13 20.22.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2384947/db2ae291-43c0-33ad-db5e-28f0aa180b60.png)

私の環境でのnode.jsのバージョンは2.6.1

```title:node.js
% node -v v10.13.0
```

はい、こちらもアップデートが必要です。


<h1>アップデート</h1>
それではアップデートしていきます。

<h2>Homebrew</h2>
手順は簡単です。以下のコマンドを実行するだけ

```title:Homebrew
brew update
```

と、思いきやここで早速問題が発生。

```
Error: homebrew-core is a shallow clone. To `brew update` first run:
  git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch --unshallow
This restriction has been made on GitHub's request because updating shallow
clones is an extremely expensive operation due to the tree layout and traffic of
Homebrew/homebrew-core. We don't do this for you automatically to avoid
repeatedly performing an expensive unshallow operation in CI systems (which
should instead be fixed to not use shallow clones). Sorry for the inconvenience!
```


このエラーの対処法については以下で詳しく書いています。
<a href="https://qiita.com/A_Ichikawa/items/3671c069b52edd8cb664">brew update実行時にError: homebrew-core is a shallow clone. が出て実行できなかった時の対処法</a>



そしてもう一度アップデートを試してみます。

```title:Homebrew
brew update
```

```
% brew -v Homebrew 3.3.7
Homebrew/homebrew-core (git revision e1567b5f249; last commit 2021-12-13)
Homebrew/homebrew-cask (git revision fca92d64f6; last commit 2021-12-13)
```

無事アップデートできました。

<h2>Nodebrew</h2>
続いてはNodebrewのアップデートです。

以下のコマンドを実行してください。

```
brew upgrade nodebrew
```

こちらは問題なく実行できました。

```title:Nodebrew
% nodebrew -v
nodebrew 1.1.0
```

<h2>Node.js</h2>
最後にNode.jsです

まずはnodebrewを使ってインストール可能なバージョンを確認します。

```
% nodebrew ls-remote
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  

v14.0.0   v14.1.0   v14.2.0   v14.3.0   v14.4.0   v14.5.0   v14.6.0   v14.7.0
v14.8.0   v14.9.0   v14.10.0  v14.10.1  v14.11.0  v14.12.0  v14.13.0  v14.13.1
v14.14.0  v14.15.0  v14.15.1  v14.15.2  v14.15.3  v14.15.4  v14.15.5  v14.16.0
v14.16.1  v14.17.0  v14.17.1  v14.17.2  v14.17.3  v14.17.4  v14.17.5  v14.17.6
v14.18.0  v14.18.1  v14.18.2  

v15.0.0   v15.0.1   v15.1.0   v15.2.0   v15.2.1   v15.3.0   v15.4.0   v15.5.0
v15.5.1   v15.6.0   v15.7.0   v15.8.0   v15.9.0   v15.10.0  v15.11.0  v15.12.0
v15.13.0  v15.14.0  

v16.0.0   v16.1.0   v16.2.0   v16.3.0   v16.4.0   v16.4.1   v16.4.2   v16.5.0
v16.6.0   v16.6.1   v16.6.2   v16.7.0   v16.8.0   v16.9.0   v16.9.1   v16.10.0
v16.11.0  v16.11.1  v16.12.0  v16.13.0  v16.13.1  

v17.0.0   v17.0.1   v17.1.0   v17.2.0   
```

たくさん出てきました。
以下のコマンドで先ほど調べた安定版のv16.13.1にアップデートします。

```
% nodebrew install-binary v16.13.1
```

バージョンを確認してみましょう。

```
% node -v v10.13.0
```

変わってませんね。。。

このような場合は過去にインストールされているnodeにパスが通っている可能性が高いです。

まずはどのnodeにパスが通っているか調べてみましょう。

```
% which node
/Users/[username]/opt/anaconda3/bin/node
```

以前pythonを触っていた時にインストールしたnodeにパスが通っていました。

なので.zshrcファイルを編集し、今回nodebrewでインストールしたところにパスを通します。

```
vim ~/.zshrc
```
上記コマンドを実行すると以下の表示が出ると思うので、
[E]を押して編集します。

```
Swap file "~/.zshrc.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort: 
```

[I]を押してINSERTモードにしたら、一行目のexport~~~の部分を以下に書き換えます。

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

escボタンを押して、[:wq]で保存したら以下コマンドでシェルを再読み込みします。

```
source ~/.zshrc
```

確認してみましょう。

```
node -v v16.13.1
```

無事アプデートできていました。


以上でMacのNode.js環境をバージョンアップが完了しました。