개요
최근 새로운 개발 머신(Macbook M2 Max
)을 사용하게 되었습니다. 그래서 Vue2
로 개발된 기존 프로젝트의 개발 환경을 구성하는 과정에서 다음과 같은 에러가 발생하였습니다.
error /node_modules/deasync: Command failed.
Exit code: 1
Command: node ./build.js
Arguments:
Directory: /node_modules/deasync
Output:
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | darwin | arm64
gyp info find Python using Python version 3.11.6 found at "/opt/homebrew/opt/[email protected]/bin/python3.11"
gyp info spawn /opt/homebrew/opt/[email protected]/bin/python3.11
gyp info spawn args [
gyp info spawn args '/.nvm/versions/node/v18.16.1/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'make',
gyp info spawn args '-I',
gyp info spawn args '/node_modules/deasync/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/.nvm/versions/node/v18.16.1/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/Library/Caches/node-gyp/18.16.1/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/Library/Caches/node-gyp/18.16.1',
gyp info spawn args '-Dnode_gyp_dir=/.nvm/versions/node/v18.16.1/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args '-Dnode_lib_file=/Library/Caches/node-gyp/18.16.1/<(target_arch)/node.lib',
gyp info spawn args '-Dmodule_root_dir=/node_modules/deasync',
gyp info spawn args '-Dnode_engine=v8',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'build',
gyp info spawn args '-Goutput_dir=.'
gyp info spawn args ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
CXX(target) Release/obj.target/deasync/src/deasync.o
SOLINK_MODULE(target) Release/deasync.node
rm -no /lib -o Release/deasync.node Release/obj.target/deasync/src/deasync.o
rm: illegal option -- n
usage: rm [-f | -i] [-dIPRrvWx] file ...
unlink [--] file
make: *** [Release/deasync.node] Error 64
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/.nvm/versions/node/v18.16.1/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:203:23)
gyp ERR! stack at ChildProcess.emit (node:events:513:28)
gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:291:12)
gyp ERR! System Darwin 23.1.0
gyp ERR! command "/.nvm/versions/node/v18.16.1/bin/node" "/.nvm/versions/node/v18.16.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /node_modules/deasync
gyp ERR! node -v v18.16.1
이번 블로그 포스트에서는 Mac M2 실리콘 칩
에서 NPM
패키지의 deasync
을 설치할 때, 발생하는 node-gyp
에러를 해결하는 방법을 공유합니다.
에러 원인
현재 Vue2
프로젝트에서 deasync
를 직접 사용하고 있지 않습니다. 그래서 왜 이 에러가 발생하는지 이해하지 못했습니다.
좀 더 자세히 살펴보면 vue-jest
라이브러리가 deasync
를 사용하고 있어서 이런 에러가 발생하는 것을 알게 되었습니다.
vue-jest
의 버전이 낮아 deasync
의 버전도 낮아 문제가 발생한다고 생각되어 최신 버전의 deasync
을 설치해보았지만, 여전히 같은 문제가 발생하였습니다.
여러 조사를 통해 Macbook M2 Max
의 실리콘 칩(arm64
)이 문제가 되었다는 것을 알게 되었습니다. 저의 개발 환경은 다음과 같습니다.
- Apple M2 Max
- Node: 18.16.1
- Yarn: 1.22.19
- Python: 3.11.6
해결 방법
저는 Node
버전을 관리하기 위해 NVM
을 사용하고 있습니다. 여러 방법을 시도했지만, 모두 실패하였습니다.
하지만, 다음과 같이 zsh
의 설정을 x86_64
으로 변경하고 Node
를 새로 설치했더니, 문제가 해결되었습니다.
- 기존
Node
삭제
nvm uninstall 18.16.1
zsh
의 설정을x86_64
으로 변경
arch -x86_64 zsh
Node
재설치
nvm install 18.16.1
exit
- 패키지 설치
yarn install
완료
저는 개발 환경을 자동으로 구성하도록 Homebrew
와 Shell Script
를 사용하고 있습니다.
새로운 개발 머신(Macbook M2 Max)에서 자동화로 개발 환경을 설정할 때, 특별히 문제가 없었습니다. 하지만, Vue2
로 개발된 기존 프로젝트에서 이런 문제가 발생하여 크게 고생하였습니다. 이 블로그 포스트가 저와 같은 문제를 겪는 분들에게 도움이 되었으면 좋겠습니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.