概要
最近新しい開発マシン(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で開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。