Install node on Apple Silicon M1 both ARM and x86 (Rosetta) 如何在 Apple Silicon 架構安裝、執行 x64 node

Install node on Apple Silicon M1 both ARM and x86 (Rosetta)
如何在 M1 晶片 (arm64) 的環境安裝 x86_64 (i386) 的 node

雖然開發、作業用的環境使用 Apple Silicon M1 (M 系列) 晶片 (ARM),但是多數 Production 都仍是 intel 類型的 (i386) 等架構
所以~在 Apple 環境下開發,還是建議使用、安裝相應的 node (架構) 版本


透過 Apple Rosetta 完成

沒有 Rosetta 的話,請手動安裝

softwareupdate –install-rosetta

Application 資料夾內找到
iTerm.app 或 utillties/Terminal.app

右鍵 get info (command + i)
啟用 Rosetta

之後 cli 都會是用 i386 的模式運作
這時候透過 nvm 安裝的 node 就會是 x64 版本

安裝完 node 後,記得再回到 get info 把 Rosetta 關掉;不然多墊一層 Rosetta 效能多少還是有影響…

總論

Apple 透過 Rosetta 可以指定執行 i386 架構 (如上述需手動啟用)
也可以同時讓 arm 和 i386 的程式混合執行 (自動 / 預設)
所以利用這個方式,在 arm64 環境架構下執行 x86_64 的 node

How Test

檢查作業環境架構

cli 輸入

arch

檢查目前 node 架構

node -e 'console.log(process.arch)'

e.g. preview

Arch

  • i386, x86, x64, x86_64 都可以認定為 intel / amd 的架構
  • arm64 即為 arm 架構

ref. x86 - 维基百科,自由的百科全书

ref.