2
3

More than 1 year has passed since last update.

Prismaのマイグレーションコマンド実行時のM1 Mac x86アーキテクチャエラーとその対処法

Last updated at Posted at 2023-08-13

事象

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アーキテクチャに対応したソフトウェアをインストールすることが推奨されています。

対処法

  1. Node.jsの再インストール

    1. 現在のNode.jsのアンインストール

      which node # Node.jsのインストールパスを確認
      sudo rm -rf [上記のコマンドの出力パス]
      
      brew uninstall node # brewでインストールした場合
      
    2. 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"
      
    3. ARM64アーキテクチャ用のNode.jsのインストール

      nvm install node # 最新バージョンのNode.jsをインストール
      nvm use node
      nvm alias default node
      
  2. VSCodeの設定変更

    1. VSCodeを開く

    2. 左下の歯車アイコンをクリックして「設定」を開く

    3. 右上の{}アイコンをクリックして、JSONモードでの設定を開く

    4. 以下の設定を追加または変更する

      settings.json
          "terminal.integrated.profiles.osx": {
              "bash": {
                  "path": "arch",
                  "args": ["-arm64", "bash", "-l"],
                  "overrideName": true
              }
          },
          "terminal.integrated.defaultProfile.osx": "bash"
      

自らの備忘録のために投稿してますが、なにかお役に立てましたら幸いです!:clap:
また、なにか間違ってましたらご指摘いただけますと幸いです!:pray:

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3