회사 특정 프로젝트에서 node v16 이전 버전을 사용하는데
해당 node 버전에서 npm install
시 오류가 발생하면서 설치가 되지 않는 현상.
찾아본 원인으로는 구 버전 node 가 arm 기반의 M1 아키텍쳐를 지원하지 않기 때문이다.
공식적으로는 v16 이상부터 m1 아키텍쳐를 지원한다고 하는데 실제로 v16.20 버전을 m1 아키텍쳐에서 설치하면 안된다 ㅜㅜ
(프로젝트에 설치된 특정 패키지 때문인지는 까지는 확인하지 못함)
기존에 설치한 node를 먼저 제거한다.
그 다음 터미널에서 임시적으로 아키텍쳐를 x86_64로 변경한다.
# 현재 아키텍쳐 확인
arch # arch: 애플 실리콘, i386: 인텔
# arm으로 변경
arch -arch arm64e /bin/zsh
# x86_64로 변경
arch -arch x86_64 /bin/zsh
그 후 원하는 node 설치 또는 nvm install 을 통해 node를 설치한다.
위 방식으로 설정하면 터미널을 닫고 다시 재시작했을 때 arm 으로 초기화되어있다.
영구적으로 x86_64 아키텍쳐로 사용하고 싶으면,
Finder -> 어플리케이션 -> 터미널을 우클릭하여 정보보기에서 Rosetta
사용하기를 체크한다.
그 다음 터미널에서 아래 명령어를 실행한다
arch -x86_64 zsh
Rosetta는 x86_64 기반의 명령어들을 애플 실리콘(M1, M2)기반의 명령어로 번역해서 동작할 수 있게 만들어 주는 프로그램이다.