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.
This commit is contained in:
mtvpls-turso
2026-07-11 17:28:55 +00:00
parent d094e379d9
commit aab6db64cc
3 changed files with 8 additions and 2 deletions
+3
View File
@@ -104,6 +104,9 @@ const createNextConfig = (phase) => {
'redis',
'@vercel/postgres',
'pg',
'libsql',
'@libsql/isomorphic-fetch',
'@libsql/isomorphic-ws',
].map((pkg) => [
pkg,
path.resolve(
+1 -1
View File
@@ -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');
+4 -1
View File
@@ -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;
}