npmやnode.jsのバージョン管理モジュール「n」を使ったらハマった話

npmのmongodbを使おうとしたら、constキーワードが通らなくてエラーになったので、情報をみるとnode.のバージョンが古いとのことだったのでnode.jsのバージョンをこころみた。

環境はこちら

$ npm -v
1.3.6
$ node --version
v0.10.48
$ cat /etc/redhat-release
CentOS release 6.10 (Final)

nodeのバージョンアップで検索するとバージョン管理ツールに「n」というものがあるらしく。それを使ってみることにしました。

nodeのバージョン管理ツールは情報によると「n」以外にも複数存在するようですが、とりあえずnを使うことにしました。

nというものを導入する

バリデーションを解除する

わたしの環境だと nmp install をしようとするのでエラーがでるので以下で対応する。

https のレジストリに対して、SSL 鍵のバリデーションを行っていることが原因でnpmがインストールできない、npmインストール一旦この設定を false にすると npm install が成功するようになる。npm install 後には true に戻しておく。

$ npm config set strict-ssl false
$ npm install hoge
$ npm config set strict-ssl true #npm installが終わったら戻す

nの導入

しかし上記の設定をしてもroot権限でないとだめだったようで、root権限にした。rootユーザーとローカルユーザーでstrict-sslの設定が異なっていたので再度 strict-sslの設定をfalseにします

この状態で n をインストールします。

# npm install -g n #rootで実行
# npm config set strict-ssl true #installが終わったら忘れずにもどす

nでnode.jsとnpmのバージョンを管理する

情報によると n とコマンドをうつだけでバージョン選択画面が現れるとあるのですが、実際には sudo n と打たないと実行されません。しかしこのやり方はわかりにくいので個人的には次に紹介するやり方のほうがよいかと思います。

sudo n

「n」を使ってnode.jsのバージョンアップを行う

node.jsのバージョンアップを行うには $ n stableというコマンドと $ n latestというコマンドを使えば実行できるようです。この2つの違いは情報によると安定版と最新版の違いみたいですがどちらもインストールしておいてよいのでしょう。

root権限でないと実行できなかったはずなので必要におうじてrootで実行します。このコマンドを実行するとnode.jsのバージョンがアップするようです。
バージョンの確認は –をつけるとよいようです

$ sudo n latest #アップデート
$ sudo n stable #アップデート

$ sudo n --latest #バージョン確認
$ sudo n --stable #バージョン確認

「n」を使ってnpmのアップデートを行う

npmのアップデートを行うには以下のコマンドを実行するとよいようです。必要におうじてrootユーザーにします。

$ npm update -g npm

トラブル

rootユーザーとローカルユーザーでnode.jsのバージョンが違うという問題がおこりました。作業の記録をとっておらずはっきりは覚えていませんが、stableに関してはローカルユーザーでも実行できるはずです

$ n stable #ローカルユーザーでバージョンアップする

まとめ

作業の記録をとりながらやればよかったのですが、あまりはっきりおぼえていません。でもとりあえずは n を使ってバージョンアップはできたようです。

$ node -v
v11.0.0
$ npm -v
6.4.1

たぶん肝は $ n stable をローカルユーザーで実行することだと思います。


Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 49

Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 78