1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M1 Macのローカルでjest-dynamodbを使ってテストする

Posted at

JestでDynamoDBのテストする方法を調べると、Jest公式のドキュメントの Using with DynamoDB が見つかります。「めっちゃ便利!」と思って進めたのですが、M1 Macの場合はちょっと一工夫必要だったので、その問題と解決策を書こうと思います。

問題

ドキュメント通りに進めて、jestを実行すると以下のようなエラーが発生します。

重大: [sqlite] SQLiteQueue[]: error running job queue
com.almworks.sqlite4java.SQLiteException: [-91] cannot load library: java.lang.UnsatisfiedLinkError: Can't load library: /private/var/folders/5c/h19nr7xj51l7rgbj889mc1y00000gn/T/dynamodb-local/DynamoDBLocal_lib/libsqlite4java-osx.dylib

ざっくり言うと、jest-dynamodb は内部的にsqlite4java というライブラリを使っているらしく、これが x86_64 にしか対応してないようです。M1 Macを使っている方だと、僕のように ARM版のJavaをインストールしている方も多いと思いますが、そうすると sqlite4java を実行できないということっぽいです。

なので、解決法としては2通り考えられます。

  • x86_64版Java をインストールして置き換える
  • ARM対応の sqlite4java をインストールして置き換える

Java自体を置き換えるのは嫌だったので、後者を実施することにしました。

サードパーティ製のライブラリをインストールするという性質上、自己責任でお願いします!
何が起きても当方は責任を負いかねます🙇‍♂️

STEP 1. ARM対応板 sqlite4java をダウンロード

ここにアクセスして io.github.ganadist.sqlite4java:libsqlite4java-osx-arm64 をダウンロードします。

STEP 2. ファイルを置き換える

エラー文で出たディレクトリを開いて、ダウンロードしたファイルを移動して置き換えます。このとき、名前の変更も忘れないようにしてください。前のファイルはリネームして残しておくのがいいと思います。

$ open /private/var/folders/5c/h19nr7xj51l7rgbj889mc1y00000gn/T/dynamodb-local/DynamoDBLocal_lib/

スクリーンショット 2022-08-06 12.22.59.png

STEP 3. 一旦開く

このままだと、Macのセキュリティに引っかかって実行できません。
なので、一旦 追加したファイルを左クリック > 開く でアプリケーションを実行してください。

スクリーンショット 2022-08-06 12.24.12.png

すると警告っぽいのでますが、開く を選択してください。
これで、アプリケーションを開くことを許可できます。

スクリーンショット 2022-08-06 12.24.34.png

STEP 4. 改めてjestを実行する

$ jest

これで問題は解決しました!

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?