事象
M1 Mac上で新しいPrismaプロジェクトをセットアップしようとした際、Prismaのマイグレーションコマンドを実行したところ、以下のエラーが発生しました。
$ npx prisma migrate dev
assertion failed [block != nullptr]: BasicBlock requested for unrecognized address
(BuilderBase.h:554 block_for_offset)
zsh: trace trap npx prisma migrate dev
原因
このエラーの主な原因は、M1 Mac上でx86アーキテクチャのNode.jsが動作していることに関連しています。M1 MacはARM64アーキテクチャを採用しているため、x86アーキテクチャ用のソフトウェアはRosetta 2を通じて変換されて実行されます。Rosetta 2は、Apple Siliconでのx86アーキテクチャのソフトウェアの互換性を提供する変換レイヤーです。しかし、一部のソフトウェアやツールはRosetta 2を使用しても正常に動作しない場合があります。そのため、M1チップを搭載したMacで最適なパフォーマンスを得るためには、ARM64アーキテクチャに対応したソフトウェアをインストールすることが推奨されています。
対処法
-
Node.jsの再インストール
-
現在のNode.jsのアンインストール
which node # Node.jsのインストールパスを確認 sudo rm -rf [上記のコマンドの出力パス] brew uninstall node # brewでインストールした場合
-
nvmのインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
最新のインストールスクリプトはnvmの公式GitHubページで確認してください。
https://github.com/nvm-sh/nvmインストール後、ターミナルを再起動または以下のコマンドを実行してnvmを有効にします。
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
-
ARM64アーキテクチャ用のNode.jsのインストール
nvm install node # 最新バージョンのNode.jsをインストール nvm use node nvm alias default node
-
-
VSCodeの設定変更
-
VSCodeを開く
-
左下の歯車アイコンをクリックして「設定」を開く
-
右上の{}アイコンをクリックして、JSONモードでの設定を開く
-
以下の設定を追加または変更する
settings.json"terminal.integrated.profiles.osx": { "bash": { "path": "arch", "args": ["-arm64", "bash", "-l"], "overrideName": true } }, "terminal.integrated.defaultProfile.osx": "bash"
-
自らの備忘録のために投稿してますが、なにかお役に立てましたら幸いです!
また、なにか間違ってましたらご指摘いただけますと幸いです!