🙄

M2 Macのnodenvで古いNode.jsをインストールできない場合の解決方法

2023/09/04に公開

ある案件の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)で実行可能なファイルを直接取得できる

こちらの記事を参考にしました!(助かった)

TAM

Discussion