コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

ノードバージョン暗黒史

暗黒時代の思い出

語らねばなるまい。お前たちにも教えよう。僕のノードへの執着の理由を。僕が不意にノードバージョンをアップグレードをしてしまったらプロセスを殺されたんだ。そしてバージョンを維持することで一命を取り留めた。それから僕は旧バージョンの下でさらなる強さと正しい道を極めようとした。だが、バージョン変更の時期が再びやって来た。僕は再度アップグレードして戦った。僕には勝てる自信があったんだ。だが、奴は強すぎた。次々と変更される仕様に対応できなかった。

僕は理解したのさ。バージョン管理こそ正義。バージョン管理こそ絶対なのだと。バージョン管理すればパッケージがついてくる。バージョン管理すればすべてが手に入る。そこに感情など不要。僕はそんなバージョン管理ツールのとてつもない強さへに惚れたんだ。

なんですかねこれ……?また頭おかしくなって怪文書いちゃってますね……。



はい、というわけで普段は温厚な僕ですが、ふと思い出したようにNode.jsを使ったらバージョンすげー変わってるし、動かない機能いくつもあるしでもうなんなのよコレみたいな感じになったのでバージョン管理システムを導入することにしました。


ちなみに事の発端は下記エラーがでたから。4系以前に作られたやつでなんやかんや使おうとするとこんなエラー出てくるようね。harmonyオプションはすでに対応済みなので以下エラーが出たらバージョン変えるしかないかもしれない。というか、そんな古いやつを使おうとするなよって話なんですけどね……。

bad option: --harmony_***

ここに出ているharmonyオプションはECMAScript6機能の一部を使えるようにするための処理だったりします。つまり、今となっては不要な機能です。


ちなみに現在のノードのバージョン一覧はこんな感じです。
リリース一覧 | Node.js
偶数版が長期サポート(安定版:LTS)、奇数版は最新要素とか盛り込んだなにかです。

Node.jsのバージョンの枝分かれの闇が深かったのでNVM使います

さて、そういうわけで最新版を使えばいいじゃんアゼルバイジャンみたいな方針でツールを使う僕ですが、付属のnpmがこの過酷なバージョン変更についていけてない気がしたのでNode.jsのバージョン管理ツールNVMを使おうと思ったのでした。

NVMって何さというとNode Vesion Managerです。つまり、Node.js そのもののバージョンを管理するやつです。

こちらから導入できます。
GitHub - creationix/nvm: Node Version Manager - Simple bash script to manage multiple active node.js versions
導入コマンド

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash


Windowsとかのらくちんインスコ方法は下の方に書いてあります。

GitHub - coreybutler/nvm-windows: A node.js version management utility for Windows. Ironically written in Go.
とりあえず僕はこっちのやつを導入して試してます。

つかってみる

インスコしたらとりあえず動くか確認していきます。

$ nvm --version
Running version 1.1.5.

Usage:
 ~使い方説明(略)~

動いたようです。動作が確認出来たら利用できるバージョンを確認してインスコします。

確認用コマンド

$ nvm list available

|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    10.4.1    |    8.11.3    |   0.12.18    |   0.11.16    |
|    10.4.0    |    8.11.2    |   0.12.17    |   0.11.15    |
|    10.3.0    |    8.11.1    |   0.12.16    |   0.11.14    |
|    10.2.1    |    8.11.0    |   0.12.15    |   0.11.13    |
|    10.2.0    |    8.10.0    |   0.12.14    |   0.11.12    |
|    10.1.0    |    8.9.4     |   0.12.13    |   0.11.11    |
|    10.0.0    |    8.9.3     |   0.12.12    |   0.11.10    |
|    9.11.2    |    8.9.2     |   0.12.11    |    0.11.9    |
|    9.11.1    |    8.9.1     |   0.12.10    |    0.11.8    |
|    9.11.0    |    8.9.0     |    0.12.9    |    0.11.7    |
|    9.10.1    |    6.14.3    |    0.12.8    |    0.11.6    |
|    9.10.0    |    6.14.2    |    0.12.7    |    0.11.5    |
|    9.9.0     |    6.14.1    |    0.12.6    |    0.11.4    |
|    9.8.0     |    6.14.0    |    0.12.5    |    0.11.3    |
|    9.7.1     |    6.13.1    |    0.12.4    |    0.11.2    |
|    9.7.0     |    6.13.0    |    0.12.3    |    0.11.1    |
|    9.6.1     |    6.12.3    |    0.12.2    |    0.11.0    |
|    9.6.0     |    6.12.2    |    0.12.1    |    0.9.12    |
|    9.5.0     |    6.12.1    |    0.12.0    |    0.9.11    |
|    9.4.0     |    6.12.0    |   0.10.48    |    0.9.10    |

This is a partial list. For a complete list, visit https://nodejs.org/download/release


インストールコマンド(導入)

$ nvm install [バージョン(例:8.11.3)]


アンインストールコマンド(削除)

$ nvm uninstall [バージョン(例:8.11.3)]


んでインストールしてもnodeが選択されていない状態なので使用するバージョンを選択する必要があります*1

$ nvm use [バージョン(例:8.11.3)]

これでnode -vで導入できたことが確認できます。やったぜ。



余談

余談だけど、パッケージ導入時にバージョン変えても証明書エラーとかがでる時があるからとりあえず以下の方法で回避できるらしいよ。

$ npm config set strict-ssl false
$ npm install [パッケージ]
$ npm config set strict-ssl true

*1:実はインストール時に下の方に注意書きが書いてあったりします。