From e493ec9d5dc5bc57fcec5551a836065d23f8544b Mon Sep 17 00:00:00 2001 From: rever-tecnologia Date: Thu, 4 Dec 2025 16:31:51 -0300 Subject: [PATCH] Fix better-sqlite3 binding for Prisma adapter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Force SKIP_SQLITE_REBUILD=false in stack.yml - Copy binding to multiple locations including @prisma/client paths - Include version-specific paths for Node.js compiled bindings 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- scripts/start-web.sh | 25 +++++++++++++++++++++++++ stack.yml | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/scripts/start-web.sh b/scripts/start-web.sh index 206d5e2..ccf9616 100644 --- a/scripts/start-web.sh +++ b/scripts/start-web.sh @@ -128,10 +128,35 @@ try { const pkgDir = path.dirname(pkgPath) const pkg = require(pkgPath) const built = path.join(pkgDir, "build", "Release", "better_sqlite3.node") + + // Copy to bun store const store = path.join(process.cwd(), "node_modules", ".bun", `better-sqlite3@${pkg.version}`, "node_modules", "better-sqlite3", "build", "Release", "better_sqlite3.node") fs.mkdirSync(path.dirname(store), { recursive: true }) fs.copyFileSync(built, store) console.log(`[start-web] better-sqlite3 (v${pkg.version}) copiado para store bun: ${store}`) + + // Copy to @prisma/adapter-better-sqlite3 and @prisma/client locations + const nodeVersion = process.version.slice(1).split('.')[0] + '.' + process.version.slice(1).split('.')[1] + '.' + process.version.slice(1).split('.')[2] + const adapterPaths = [ + // Adapter locations + path.join(process.cwd(), "node_modules", "@prisma", "adapter-better-sqlite3", "build", "Release", "better_sqlite3.node"), + path.join(process.cwd(), "node_modules", "@prisma", "adapter-better-sqlite3", "node_modules", "better-sqlite3", "build", "Release", "better_sqlite3.node"), + // @prisma/client locations that the adapter might be looking at + path.join(process.cwd(), "node_modules", "@prisma", "client", "build", "Release", "better_sqlite3.node"), + path.join(process.cwd(), "node_modules", "@prisma", "client", "Release", "better_sqlite3.node"), + path.join(process.cwd(), "node_modules", "@prisma", "client", "compiled", nodeVersion, "linux", "x64", "better_sqlite3.node"), + // Bun store locations + path.join(process.cwd(), "node_modules", ".bun", "@prisma-adapter-better-sqlite3@7.0.0", "node_modules", "@prisma", "adapter-better-sqlite3", "node_modules", "better-sqlite3", "build", "Release", "better_sqlite3.node"), + ] + for (const dest of adapterPaths) { + try { + fs.mkdirSync(path.dirname(dest), { recursive: true }) + fs.copyFileSync(built, dest) + console.log(`[start-web] binding copiado para: ${dest}`) + } catch (e) { + // Ignore path copy errors + } + } } catch (error) { console.error("[start-web] não foi possível copiar binding para .bun store:", error?.message || error) } diff --git a/stack.yml b/stack.yml index 25b4ef9..a17bf7b 100644 --- a/stack.yml +++ b/stack.yml @@ -34,7 +34,7 @@ services: # Evita apt-get na inicialização porque a imagem já vem com toolchain pronta SKIP_APT_BOOTSTRAP: "true" # Sempre revalida/rebuild better-sqlite3 para a runtime atual - SKIP_SQLITE_REBUILD: "true" + SKIP_SQLITE_REBUILD: "false" # Usado para forçar novo rollout a cada deploy (setado pelo CI) RELEASE_SHA: "${RELEASE_SHA:-dev}" deploy: