カテゴリー
RustエンジンレスなPrisma/SQLiteクライアントを外部モジュールとして利用する
※ 当ページには【広告/PR】を含む場合があります。
2025/07/01

#...
PrismaClientInitializationError: Prisma Client could not locate the Query Engine for runtime "debian-openssl-3.0.x".
This is likely caused by a bundler that has not copied "libquery_engine-debian-openssl-3.0.x.so.node" next to the resulting bundle.
Ensure that "libquery_engine-debian-openssl-3.0.x.so.node" has been copied next to the bundle or in "prisma/client".
ドライバーアダプタの導入方法
$ npx prisma --version
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
prisma : 6.10.1
@prisma/client : 6.10.1
Computed binaryTarget : debian-openssl-3.0.x
Operating System : linux
Architecture : x64
Node.js : v24.3.0
TypeScript : 5.8.3
Query Engine (Node-API) : libquery-engine 9b628578b3b7cae625e8c927178f15a170e74a9c (at node_modules/@prisma/engines/libquery_engine-debian-openssl-3.0.x.so.node)
PSL : @prisma/prisma-schema-wasm 6.10.1-1.9b628578b3b7cae625e8c927178f15a170e74a9c
Schema Engine : schema-engine-cli 9b628578b3b7cae625e8c927178f15a170e74a9c (at node_modules/@prisma/engines/schema-engine-debian-openssl-3.0.x)
Default Engines Hash : 9b628578b3b7cae625e8c927178f15a170e74a9c
Studio : 0.511.0
Prismaスキーマの修正
driverAdapters
queryCompiler
generator client {
provider = "prisma-client-js"
//👇これを追記
previewFeatures = ["queryCompiler", "driverAdapters"]
}
//...
$ npx prisma generate
--no-engine
ドライバーアダプタのインストール
$ yarn add better-sqlite3 @prisma/adapter-better-sqlite3
$ yarn add -D @types/better-sqlite3
import { PrismaClient } from '@prisma/client';
import { PrismaBetterSQLite3 } from '@prisma/adapter-better-sqlite3';
if (!process.env.DATABASE_URL) {
throw new Error('DATABASE_URL environment variable is not set.');
}
const adapter = new PrismaBetterSQLite3({ url: process.env.DATABASE_URL as string });
const prisma = new PrismaClient({ adapter });
//...通常のprismaクライアントの操作
Prismaクライアントを含むライブラリを外部の別プロジェクトへ持ち込む
たしかにRustエンジンは不要になったが...
node:fs:554
return binding.open(
^
Error: ENOENT: no such file or directory, open '/usr/src/app/prisma/client/query_compiler_bg.wasm'
#...
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/usr/src/app/prisma/client/query_compiler_bg.wasm'
}
query_compiler_bg.wasm
query_compiler_bg.wasm
/usr/src/app/prisma/client
better_sqlite3.nodeを準備する
query_compiler_bg.wasm
Error: Could not locate the bindings file. Tried:
→ /usr/src/app/build/better_sqlite3.node
→ /usr/src/app/build/Debug/better_sqlite3.node
→ /usr/src/app/build/Release/better_sqlite3.node
→ /usr/src/app/out/Debug/better_sqlite3.node
→ /usr/src/app/Debug/better_sqlite3.node
→ /usr/src/app/out/Release/better_sqlite3.node
→ /usr/src/app/Release/better_sqlite3.node
→ /usr/src/app/build/default/better_sqlite3.node
→ /usr/src/app/compiled/24.3.0/linux/x64/better_sqlite3.node
→ /usr/src/app/addon-build/release/install-root/better_sqlite3.node
→ /usr/src/app/addon-build/debug/install-root/better_sqlite3.node
→ /usr/src/app/addon-build/default/install-root/better_sqlite3.node
→ /usr/src/app/lib/binding/node-v137-linux-x64/better_sqlite3.node
#...
{
tries: [
'/usr/src/app/build/better_sqlite3.node',
'/usr/src/app/build/Debug/better_sqlite3.node',
'/usr/src/app/build/Release/better_sqlite3.node',
'/usr/src/app/out/Debug/better_sqlite3.node',
'/usr/src/app/Debug/better_sqlite3.node',
'/usr/src/app/out/Release/better_sqlite3.node',
'/usr/src/app/Release/better_sqlite3.node',
'/usr/src/app/build/default/better_sqlite3.node',
'/usr/src/app/compiled/24.3.0/linux/x64/better_sqlite3.node',
'/usr/src/app/addon-build/release/install-root/better_sqlite3.node',
'/usr/src/app/addon-build/debug/install-root/better_sqlite3.node',
'/usr/src/app/addon-build/default/install-root/better_sqlite3.node',
'/usr/src/app/lib/binding/node-v137-linux-x64/better_sqlite3.node'
],
clientVersion: '6.10.1'
}
/usr/src/app
build
better_sqlite3.node
better_sqlite3
better_sqlite3.node
$ ls node_modules/better-sqlite3/build/Release/
better_sqlite3.node
DBファイルを配置する
DATABASE_URL
./dev.db
DATABASE_URL
絶対パス
/usr/src/app/data
#DATABASE_URL=file:./dev.db
DATABASE_URL=file:/usr/src/app/data/dev.db
.env
まとめ
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー