4
3

More than 3 years have passed since last update.

nodeのバージョンが古く、npmがアップデートできない(バージョン管理:nodebrewとanyenv)

Last updated at Posted at 2020-01-20

はじめに

概要

Webサイト作るお仕事をしている方向けの内容です。

  • gulpを使用してフロントエンドの環境構築
  • バージョン管理はnodebrewとanyenv
  • 既にgulpを使用している

(nodebrewとanyenvに関しては後々記事を書いていこうと思います。)

出来事

gulpを使用したかったので、他の記事にもあるように

① Node.js
② npm
③ gulp

の順番で確認しました。
今回は私が普段からgulpを使用しているので、ダウンロードではなくバージョンを確認してgulpを導入する。という方向から進めました。
(もしバージョンが古ければ適宜アップデートする必要がある)

nodeバージョン確認

まず、ターミナルから、Node.jsのバージョンを確認します。

node.js
node -v

結果

node.js
v9.2.0

nodeのバージョンが、9.2.0であることがわかりました。
(当時の最新バージョンは13.6.0、推奨バージョンは12.14.1なので若干古いことが分かります。)

npmのバージョンの確認

npm -v

結果

EROOR: npm is known not to run on Node.js v9.2.0
Node.js is 9 is supported but the specific version you're running has
a bug known to break npm.Please update to at least 9.0.0 to use this version of npm.You can find the latest release of Node.js at https://node.js.org/

はい、エラーが出ました。

エラー内容

なんとなくの翻訳
→npmはNode.jsの9.2.0で実行されない
→Node.jsは9がサポートされているが、実行している特定のバージョンにはnpmを壊すバグがあるよ(?)
→最低9.0.0のバージョンにアップデートしてください

先程調べたように、現在のnodeのバージョンは9.2.0
けど、このエラーは最低9.0.0のバージョンにアップデートして欲しいらしい。謎。

試した事

色々コマンドを試しました。

(例)

nodebrew ls-remote  ・・・nodebrewで使用可能なnodeのバージョンの確認
nodebrew install-binary {バージョン}  ・・・nodebrewを使用してnodeのアップデート
sudo npm install -g npm   ・・・npmのアップデート

他にも沢山。
どれもダメでした。

そして最終的に行き着いた、解決できそうな方法が2つ。

選択肢

  • 選択肢 1
    • このまましつこくトライする(nodeのアップデートを続けてみる)
  • 選択肢 2
    • 一度nodeを消して、再ダウンロード

選んだのは、選択肢 1 の、しつこくトライ。

理由

node.jsのバージョン管理をnodebrewとanyenvで行なっており、まだ詳しく理解していないので、更なるエラーが出るのが怖かったから。

解決した方法

nodenv install -l  ・・・インストール可能なバージョンのリストを確認

結果

12.8.1
12.9.0
12.9.1
12.10.0
12.11.0
12.11.1
12.12.0
12.13.0
12.13.1
13.0.0
13.0.1
13.1.0
13.2.0
chakracore-dev
chakracore-nightly
chakracore-8.1.2
chakracore-8.1.4
chakracore-8.2.1
chakracore-8.3.0  ・・・・・・

たくさん出てきます。

自分が今欲しいと思っているバージョンをインストールしよう。

nodenv install {バージョン}

↓ 私は当時の推奨版をインストールしました。

nodenv install 12.13.0

過去に複数のバージョンをインストールしてきていると思うので、
以下のコマンドでインストール済みのバージョンを確認してみます。

nodenv whence npm

結果

8.10.0
9.2.0
10.9.0
12.13.0

コンピュータのデフォルトのバージョンを指定します。
指定できるのはインストールしたバージョンなので、

nodenv global 12.13.0

再度、nodeのバージョンを確認してみました。

node -v
v12.13.0

nodeのアップデートが終わったところで、npmのエラーがどうなったのか確認しました。
なんと消えていました。

nodeとnpmのアップデートが無事終わったと言う事で一件落着。

さいごに

"自分のPCの開発環境を知ってるのは自分だけだからね"
と、エンジニア歴十数年のベテランインフラエンジニアの友人に言われた事を思い出しました。
ひとつひとつの原理原則を、きちんと理解して進めないといけないなぁと思うばかり。

参考サイト

・MacにNode.jsをインストール(anyenv + nodenv編)
https://qiita.com/kyosuke5_20/items/eece817eb283fc9d214f

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3