From aab6db64cc48abbc0068083d85ffe30964988c61 Mon Sep 17 00:00:00 2001 From: mtvpls-turso Date: Sat, 11 Jul 2026 17:28:55 +0000 Subject: [PATCH] fix: use @libsql/client/http subpath to avoid native module deps The main @libsql/client entry point pulls in the native libsql module and isomorphic-ws/isomorphic-fetch, which webpack cannot parse in EdgeOne builds. Using the http subpath provides a pure HTTP client that works in edge/serverless environments without native dependencies. Also add libsql, @libsql/isomorphic-fetch, @libsql/isomorphic-ws to the edge build alias list in next.config.js as a safety net. --- next.config.js | 3 +++ scripts/init-turso.js | 2 +- src/lib/turso-adapter.ts | 5 ++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/next.config.js b/next.config.js index 6b466d5..d4c0658 100644 --- a/next.config.js +++ b/next.config.js @@ -104,6 +104,9 @@ const createNextConfig = (phase) => { 'redis', '@vercel/postgres', 'pg', + 'libsql', + '@libsql/isomorphic-fetch', + '@libsql/isomorphic-ws', ].map((pkg) => [ pkg, path.resolve( diff --git a/scripts/init-turso.js b/scripts/init-turso.js index 6552136..84e68f3 100644 --- a/scripts/init-turso.js +++ b/scripts/init-turso.js @@ -14,7 +14,7 @@ * 3. 运行:node scripts/init-turso.js */ -const { createClient } = require('@libsql/client'); +const { createClient } = require('@libsql/client/http'); const fs = require('fs'); const path = require('path'); const crypto = require('crypto'); diff --git a/src/lib/turso-adapter.ts b/src/lib/turso-adapter.ts index 5aeb7f3..d2cedda 100644 --- a/src/lib/turso-adapter.ts +++ b/src/lib/turso-adapter.ts @@ -18,9 +18,12 @@ import { DatabaseAdapter, D1PreparedStatement, D1Result } from './d1-adapter'; * * 使用 require 而非 import,避免 webpack 在 EdgeOne 构建中 * 因条件导出 (edge-light) 错误解析 ESM 模块 + * + * 使用 @libsql/client/http 子路径而非主入口,避免拉入原生 libsql + * 模块和 isomorphic-ws/isomorphic-fetch 等不兼容边缘环境的依赖 */ function getLibsqlClient(): any { - const mod = require('@libsql/client'); + const mod = require('@libsql/client/http'); return mod.createClient || mod.default?.createClient; }