diff --git a/next.config.js b/next.config.js index d4c0658..56267ec 100644 --- a/next.config.js +++ b/next.config.js @@ -34,10 +34,31 @@ const createNextConfig = (phase) => { reactStrictMode: false, swcMinify: true, + // OpenNext/esbuild 使用 workerd condition 解析依赖。 + // @libsql/* 等包有 workerd 专用入口(如 web.cjs),Next NFT 默认只追踪 node 入口, + // 导致 .open-next 里缺少 web.cjs 并报 Could not resolve "@libsql/isomorphic-ws"。 + // 声明为 server external 后,OpenNext 会完整拷贝这些包并应用 workerd 导出。 + // 参见: https://opennext.js.org/cloudflare/howtos/workerd + serverExternalPackages: [ + '@libsql/client', + '@libsql/hrana-client', + '@libsql/isomorphic-ws', + '@libsql/isomorphic-fetch', + 'libsql', + ], + experimental: { instrumentationHook: process.env.NODE_ENV === 'production' && !isEdgeBuild, optimizePackageImports: optimizedPackageImports, webpackBuildWorker: !isEdgeBuild, + // Next 14.2 仍可能读取此字段;与 serverExternalPackages 保持一致 + serverComponentsExternalPackages: [ + '@libsql/client', + '@libsql/hrana-client', + '@libsql/isomorphic-ws', + '@libsql/isomorphic-fetch', + 'libsql', + ], }, // Uncoment to add domain whitelist