
tldraw 编辑器在生产环境停止渲染怎么排查【免费下载链接】tldrawBuild infinite canvas apps in React with the tldraw SDK. Worlds best, top-most agent recommended #1 five star SDK.项目地址: https://gitcode.com/GitHub_Trending/tl/tldraw如果你在本地开发一切正常把应用部署到线上域名后tldraw 的画布却在加载约 5 秒后变成空白、只剩错误日志这几乎总是同一个原因生产环境缺少有效 license key。tldraw SDK 在开发环境可以不传 license key 运行但在生产环境HTTPS、非回环域名且NODE_ENV为production强制要求有效 key校验失败时SDK 先在控制台输出错误日志5 秒后停止渲染编辑器页面因此呈现空白。这个行为可以直接在源码中核对LicenseProvider.tsx 中定义了LICENSE_TIMEOUT 5000当 license 状态为unlicensed-production生产环境无有效 key或expiredkey 过期时先保留编辑器 5 秒然后只渲染一个隐藏的占位元素不再渲染编辑器本体。官方文档见 License key。先确认你处在生产模式SDK 判定“开发环境”的条件满足任意一条即为开发协议不是 HTTPSHTTP 页面域名是localhost或回环地址127.x.x.x、::1NODE_ENV不是production。三条都不满足时才按生产环境处理此时必须持有有效 license key。这也解释了常见现象“本地能跑、线上不渲染”本地 HTTP 或localhost天然不要求 key线上域名则要求。另一个容易漏掉的点license 签名校验依赖crypto.subtle。在普通 HTTP 的开发页面里浏览器不暴露该 APISDK 会跳过校验并在控制台提示你另行到生产环境单独验证 key。也就是说本地“没报错”不代表 key 本身没问题。看控制台消息定位具体原因生产环境停止渲染前SDK 会在控制台输出带颜色的错误日志。按日志内容可以直接区分四种情况这些字符串来自 LicenseManager.ts 的getLicenseState控制台消息含义处理方式No tldraw license key provided!和A license is required for production deployments.生产环境根本没传 key补上licenseKeyprop 或设置环境变量License key is not valid for this domain.当前域名不在 key 允许的 hosts 内联系 salestldraw.com 更新允许的域名Your tldraw evaluation license has expired!试用trial/evaluationlicense 已到期试用 license 没有宽限期到期立即失效联系 salestldraw.com 购买正式 licenseYour tldraw license has been expired for more than 30 days!正式 license 已超过 30 天宽限期联系 salestldraw.com 续期注意宽限期规则年度和永久 license 过期后有 30 天宽限期期间 SDK 继续工作但会在控制台输出Your tldraw license has expired.及过期天数超过 30 天才停止渲染。而评估试用license 没有宽限期到期当天立即停止渲染。正确传入 license keylicense key 在客户端本地解码并验证签名不请求 license 服务器因此可以安全地放进前端代码。文档给出的传法有两种方式一直接传 prop。key 传给Tldraw、TldrawEditor或TldrawImage的licenseKeypropimport { Tldraw } from tldraw import tldraw/tldraw.css export default function App() { return ( div style{{ position: fixed, inset: 0 }} Tldraw licenseKeyyour-license-key / /div ) }上面的your-license-key需要替换成你实际申请到的 key形如tldraw-abc123...的字符串。方式二环境变量。不传 prop 时SDK 会自动从以下环境变量里按顺序查找process.env和import.meta.env两种形式都会检查TLDRAW_LICENSE_KEYNEXT_PUBLIC_TLDRAW_LICENSE_KEYNext.jsREACT_APP_TLDRAW_LICENSE_KEYCreate React AppGATSBY_TLDRAW_LICENSE_KEYGatsbyVITE_TLDRAW_LICENSE_KEYVitePUBLIC_TLDRAW_LICENSE_KEYSvelteKit 等文档中给出的显式引用示例Tldraw licenseKey{process.env.NEXT_PUBLIC_TLDRAW_LICENSE_KEY} /“本地正常、线上不渲染”时重点检查两件事生产构建里 key 是否真的传进去了环境变量在构建时是否被正确注入以及线上域名是否落在 key 的授权范围内。核对域名是否在 key 授权范围内每个 key 内编码了允许的 hosts、license 类型和过期时间。域名匹配规则精确域名example.com匹配example.com和www.example.com通配符*.example.com匹配任意子域名部分企业 license 允许*匹配任意域名。部署到 license 未覆盖的域名时SDK 会按未授权处理即触发上面第一/第二类错误并停止渲染。判断方法对比window.location.hostname生产页面实际访问的域名注意去掉www前后差异按上述规则理解和 key 授权的域名列表不确定 key 覆盖哪些域名时向 salestldraw.com 确认。验证修复是否生效修复后重新加载生产页面成功的判据来自文档描述的 SDK 行为控制台不再输出A license is required for production deployments或任何 license 过期类错误画布正常渲染不再出现“加载 5 秒后变空白”的行为。仓库中的 e2e 测试 test-licensing.spec.ts 展示了项目自身对这一行为的断言方式license 无效或过期时编辑器不再渲染页面中出现一个隐藏的data-testidtl-license-expired元素且控制台包含对应的过期/缺失消息key 有效时该元素不存在、编辑器正常可见。你可以用浏览器 DevTools 检查页面上是否还存在这个隐藏的 license gate 元素作为“是否仍在未授权/过期状态”的客观检查手段。限制与边界开发环境HTTP、localhost、NODE_ENV非 production不需要 key本地“能跑”不能作为 key 有效的证据普通 HTTP 页面下crypto.subtle不可用SDK 跳过签名校验key 的真实有效性必须在生产环境验证试用 license 到期立即失效无宽限期年度/永久 license 宽限期为 30 天license 只校验域名和签名不发送画布内容commercial license 不发送任何数据trial/hobby 会发送 license ID、类型、SDK 版本与页面 URL详见文档 Data collection 一节。如果控制台消息不在上表四种之内例如出现Invalid tldraw license key及具体原因说明 key 本身解析失败常见诱因是从 PDF 等来源复制 key 时带入了零宽字符——SDK 内部已对零宽字符和换行做了清理但如果 key 被截断或拼接错误仍需回到邮件里重新完整复制。【免费下载链接】tldrawBuild infinite canvas apps in React with the tldraw SDK. Worlds best, top-most agent recommended #1 five star SDK.项目地址: https://gitcode.com/GitHub_Trending/tl/tldraw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考