古いサービスのメンテナンスをしている時に、npm installを実行し、npm run devでコンパイルしようとしたところ、依存関係のパッケージでsyntaxが読み込めないというエラーが発生した。
npmとnodeのバージョンを上げれば対応できそうとのことだったが、バージョンを最新にするのは確認が取れていないのでNG。指定してアップデートする必要があるとのこと。
npmとnodeのバージョンを指定してアップデートする方法について。
この記事はMac用です。
WindowsでNode.jsのバージョンやnpmのバージョンを管理・変更・アップデートする方法については下記をご参考ください。
【Node・npm】Windowsでnode.jsのバージョンをアップデート・変更する方法|バージョンが切り替わらないときの対処法(nodistの使い方)
npmとnodeの現在のバージョンを確認
npm -v と node -vで現在のバージョンが確認できる。-v は –versionの略。
$ node -v
v6.14.4
$ npm -v
3.10.10
現在のnodeのバージョンは6.14.4、npmのバージョンは3.10.10。これを、nodeは8.0.0、npmは5.0.0まで上げる。
※npmはnodeに合ったバージョンが自動でインストールされる。なので、node v8.0.0をインストールすれば自動でnpmのバージョンもv5.0.0に切り替わる。
パッケージ「n」のインストール
node.jsのパッケージ管理ツールである「n」をインストールする。npm install -g n を実行。
$ npm install -g n
/usr/bin/n -> /usr/lib/node_modules/n/bin/n
/usr/lib
`-- n@7.2.2
「n」の中にnodeをインストールする
パッケージnの中で好きなnodeのバージョンを切り替えることができる。そのためにはまず、nの中にnodeパッケージをインストールする必要がある。
n <バージョン> を実行。
$ n 8.0.0
installing : node-v8.0.0
mkdir : /usr/local/n/versions/node/8.0.0
fetch : https://nodejs.org/dist/v8.0.0/node-v8.0.0-linux-x64.tar.gz
installed : v8.0.0 (with npm 5.0.0)
nの中にnode v8.0.0のインストールが完了。npmはnodeのバージョンに合わせて適切な物が入っている。
node v8.0.0とセットになっているのはnpm v5.0.0。
なお、installedがでた時点でそのバージョンに自動で切り替わっている。
nodeバージョンの切り替え
いよいよローカルのnodeバージョンを切り替える。コマンド n を実行すると、nの中にインストールされているパッケージ一覧が別ウインドウで表示される。
上下キーで選択し、Enterをクリック。
ο node/8.0.0
node/8.17.0
Use up/down arrow keys to select a version, return key to install, d to delete, q to quit
以上で設定が完了。
$ n
installed : v8.0.0 (with npm 5.0.0)
「n」でバージョンが切り替わらない時の対処法
バージョンの切り替えを実行したが、バージョンが切り替わらない状況が発生した場合の対処法。
例えば以下のように、v8.0.0にしたのに、バージョンを確認すると元のv6.14.4が表示されてしまう。
$ n
installed : v8.0.0 (with npm 5.0.0)
$ node -v
v6.14.4
docker上でUbuntuを使っている時などに発生する。一旦コンテナからexitで抜けて、再度コンテナに入って確認すると、バージョンが切り替わる。
$ node -v
v8.0.0
$ npm -v
5.0.0
目的のバージョンに切り替わり、以上で完了。