LoginSignup
3
1

More than 1 year has passed since last update.

Node.jsをアップデートできない問題を解決した (Apple M1)

Last updated at Posted at 2022-11-06

背景

firebaseをインストールしたのですが、Node.jsのバージョンが古くて「Incompatibleだよ」と言われました。
そのためNode.jsをアップデートしようとしたのですが、つまづいてしまったので、解決した方法をこの記事に書くことにしました。

症状

Firebaseコマンドを利用しようとしたらターミナルがこのように表示してきました。

Firebase CLI v11.16.0 is incompatible with Node.js v12.19.0 Please upgrade Node.js to version ^14.18.0 || >=16.4.0

どうやらNode.jsのバージョンを16.4.0以上にアップグレードしなければいけないようです。

HomebrewおよびNodebrewをインストールしており、Nodebrewを利用してNode.jsのアップデートを試行しました。

Node.jsアップグレード失敗。"Darwin arm64 is not supported"

nodebrewでnode.jsをアップグレードを試しましたが、失敗し以下のエラーを吐きました。

Darwin arm64 is not supported

こうなる理由は、私のNodebrewのバージョン(v1.0.1)では、「arm64」、つまりApple M1はサポートされていないためのようです。

そのため、Node.jsの前に、まずNodebrewのアップデートが必要になりました。
まずは「Nodebrewのアップデート」、次に「Node.jsのアップグレード」の手順を紹介します。

解決

Homebrewをアップデート

一応Homebrewもアップデートしておきます。Homebrewのアップデートのコマンドは以下の通りです。

brew update

nodebrewアップデート

nodebrewのアップデートを以下のコマンドで実行します。

brew install nodebrew

しかし、、、成功しているようなのですが、以下のコマンドでバージョンを確認すると、

nodebrew -v
//結果: nodebrew 1.0.1

なんと、、、全く変わっていません。
(実際には、アップデートは出来ていました)

パスを通す

上記のようにバージョンが変わっていないように見えたのは、以下のパスを通していないためでした。

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

このパスをディレクトリの .zshrc か .bashrc に記入する必要があります。

.zshrc か .bashrcか、についてですが、
自分のMacのデフォルトのシェルを調べるコマンドがあります。以下のコマンドを実行します。

echo $SHELL

私の場合はこれで .zshrc だというのが判明しました。
そのため、.zshrc にパスを記入することにします。

パスの通し方

以下のコマンドを実行し、進めました。

//ホームディレクトリに移動
cd ~/

// ディレクトリ内のファイルを一覧表示(.zshrcなどは隠しファイルのためこのコマンドが必要
ls -a

// 設定ファイルがない場合にはこれで作成(.zshrcの場合)
touch .zshrc

// .zshrcを開く
open ~/.zshrc

これで設定ファイル(.zshrc)が開けます。
テキストエディットで開けるはずなので、そこに以下のパスを記入します。

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

その後、ターミナルでパス変更を反映させます。

source ~/.zshrc

これでパスが通りました。
改めてnodebrewのバージョンを再確認します。

nodebrew -v
//結果: nodebrew 1.1.0

これでNodebrewのアップデートがついに成功しました。

Node.jsのアップグレード

Nodebrewが正しくアップデートできたので、次はNode.jsです。以下のコマンドで最新の安定版がインストールできます。

nodebrew install-binary stable

バージョン確認のため、以下のコマンドを叩きます

node -v
//結果: v18.12.1

Node.jsのアップグレードが成功したことが分かりました。これでOKです。

※これでもバージョンが変わらないようであれば、以下のコマンドを利用してください。バージョンを指定できます。

nodebrew use 18.12.1
// バージョンはインストールしたものを入力してください

ちなみに、これによりFirebaseのエラーは突破したのですが、別のエラー(digital envelope routines::unsupported)が発生しましたが、これは以下の記事の内容で解決しました。

参考になったページ

ありがとうございました。

3
1
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
3
1