🙄
M2 Macのnodenvで古いNode.jsをインストールできない場合の解決方法
ある案件のNode.jsバージョンが12.19.0
だったので、nodenvでインストールしようとするとBUILD FAILED (OS X 12.6 using node-build 4.9.120)
のようにエラーになってしまいました。
解決方法
結論から言うと、次のコマンドで解決しました。
arch -x86_64 nodenv install 12.19.0
nodenv versions
を実行すると12.19.0
がインストールできているのを確認できるはずです。
nodenv以外のバージョン管理ツールでも同じ方法を使えるかもしれません。
ターミナルをFinderの「情報を見る」で開き、「Rosettaを使用して開く」で解決する方法もあるようでしたが、今回は解消できませんでした。
原因
このあたりは詳しくないのですが、次のような背景から解決できたようです(誤りがあればコメントいただけると嬉しいです)。
- M1チップはarm64、Intelチップはx86_64というアーキテクチャになっている
- Node.js v16以上ではarm64バイナリが公式で提供されているので正常に動作する
- x86_64(Intel)をarm64(M1など)で動作させるRosettaというレイヤーがある
- Node.js v16未満?だと、Rosettaが起動せず、正常に動作しないことがある
-
arch
コマンドでアーキテクチャ(CPUタイプ)を指定することで、x86_64(Intel)で実行可能なファイルを直接取得できる
こちらの記事を参考にしました!(助かった)
Discussion