
TypeError: crypto.randomUUID is not a function
快速结论:该报错出现在 Langfuse 自托管实例(版本 3.195+)通过 HTTP(非 HTTPS)访问时,点击数据集 “添加条目” 按钮触发。优先排查访问协议是否为 HTTPS,或改用 localhost 访问。
问题场景
用户将 Langfuse 自托管实例升级到 3.195 版本后,使用 Docker Compose 部署。在数据集(Datasets)列表中点击 “+New item” 按钮时,页面完全清空并显示 “Application error” 错误提示,浏览器控制台报出 TypeError: crypto.randomUUID is not a function。常规打开数据集详情页面不受影响。
报错原文
Application error: a client-side exception has occurred while loading langfuse
A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred
TypeError: crypto.randomUUID is not a function
at 09kpglkurpolg.js:4:63716
at 09kpglkurpolg.js:4:63888
at a5 (0et246u1llmyy.js:16:124089)
at oP (0et246u1llmyy.js:16:144304)
at oV (0et246u1llmyy.js:16:155334)
at lb (0et246u1llmyy.js:16:188967)
at 0et246u1llmyy.js:16:188812
at lv (0et246u1llmyy.js:16:188820)
at ls (0et246u1llmyy.js:16:184976)
at lX (0et246u1llmyy.js:16:207446)
原因分析
该错误直接关联 PR #14257。该 PR 在数据集条目创建表单(NewDatasetItemForm.tsx)和 useDatasetItemMediaUpload.ts 中引入了 crypto.randomUUID() 调用,用于预生成条目 ID(以支持媒体附件功能)及追踪待上传状态。但 crypto.randomUUID() 仅在 安全上下文(Secure Contexts,即 HTTPS 或 localhost)中可用。当用户通过普通的 HTTP 协议访问自托管实例时,浏览器不会暴露 crypto.randomUUID(),从而触发此 TypeError。
环境排查
- 确认 Langfuse 版本是否为 3.195 或更高
- 确认当前浏览器访问协议:Chrome/Firefox 地址栏显示的是
http://还是https:// - 确认是否通过
localhost或127.0.0.1访问(localhost 被视为安全上下文) - 确认浏览器版本(现代浏览器均支持
crypto.randomUUID,问题是安全上下文限制,而非浏览器兼容性)
解决步骤
- 切换为 HTTPS 访问(推荐):为自托管实例配置 HTTPS 证书(例如通过反向代理 Nginx/Caddy 或 Docker 直接挂载证书),然后使用
https://协议访问 Langfuse 管理界面。 - 临时使用 localhost 访问:如果仅在本地开发或测试,可以直接通过
http://localhost:端口访问(不适用于远程网络)。 - 等待 Langfuse 官方修复(可优先尝试替代方案但非必须):Issue 讨论建议作者修改
crypto.randomUUID调用,加入 fallback 逻辑,例如:globalThis.crypto?.randomUUID?.() ?? self.crypto.getRandomValues(...)或使用 UUID polyfill。若社区已合并修复补丁,升级到修复版本即可。
验证方法
切换为 HTTPS 或 localhost 访问后,再次进入数据集详情页,点击 “+New item” 按钮。如果页面正常弹出新条目创建表单且不再报错,说明问题已解决。也可以同时检查浏览器开发者工具控制台,确认无新的 TypeError 或 500 级报错。


