LoginSignup
2
0

More than 1 year has passed since last update.

M1 Mac で prisma generate などが(確率で)失敗する問題の解消

Posted at

どんな問題?

最近 prisma を利用しているプロジェクトの各種バージョンをアップグレードしたら、
以下のようなエラーで prisma 系コマンドが確率で失敗するようになってしまった。

意味がわからないが本当に確率で失敗する。
5割成功する日もあれば、1割しか成功しない日もあった。クソ謎。

$ npx prisma generate

> repit-server@0.0.1 prisma-generate
> prisma generate

Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
assertion failed [block != nullptr]: BasicBlock requested for unrecognized address
(BuilderBase.h:550 block_for_offset)
 [1]    69526 abort      npx prisma generate

原因と解決方法

参考 issue によれば、 インストールされている node が x86 用のものだったことが原因。
Prisma 自体の問題ではないとのこと。

(nodenv 経由で) arm64 用 node のインストールを行うことで解決できた。

元の状態

$ node -v
v18.15.0
$ node -e 'console.log(process.arch)'
x64

# 現在の shell のモード
$ uname -mp
x86_64 i386

この状態で node を再インストールし直すと変わらず x64 版がインストールされたため、
shell を arm64 モードに切り替えてみる。

解決策

# ターミナルを ARM64 に切り替え
$ arch -arm64e /bin/zsh  
$ uname -mp
arm64 arm

# nodenv で対象のバージョンを(再)インストール
# darwin-arm64 版がダウンロードされればOK
$ nodenv uninstall 18.15.0
$ nodenv install 18.15.0
Downloading node-v18.15.0-darwin-arm64.tar.gz...
-> https://nodejs.org/dist/v18.15.0/node-v18.15.0-darwin-arm64.tar.gz
...

# arm64 版が入ったことを確かめてみる
$ node -e 'console.log(process.arch)'
arm64

# prisma バイナリを消すためにプロジェクトの node_modules をインストールし直し
$ rm -rf ./node_modules
$ npm i

# 上記実施以降は毎回 arch 切り替えは必要なし
$ npx prisma generate

意図したとおり arm64 node がインストールでき、prisma 系コマンドが 100% 成功するようになった!

2
0
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
0