TypeError: crypto.randomUUID is not a function

在 Dify 问题分类器(Question Classifier)节点中点击新增分类时,如果浏览器当前页面不是安全上下文(例如使用局域网 IP 的 HTTP 地址访问),前端调用 crypto.randomUUID() 会报 TypeError: crypto.randomUUID is not a

快速结论:在 Dify 问题分类器(Question Classifier)节点中点击新增分类时,如果浏览器当前页面不是安全上下文(例如使用局域网 IP 的 HTTP 地址访问),前端调用 crypto.randomUUID() 会报 TypeError: crypto.randomUUID is not a function,导致分类列表无法更新。优先排查访问地址是否为浏览器信任的 HTTPS。

适用环境:Dify 1.19.0,Self Hosted(Docker)部署,问题出现在 Web 前端,与 Python、CUDA、PyTorch、显卡环境无关。

最快修复方案:暂无确认的一步修复方案(针对该调用的兼容处理 PR #44935 截至 2026-11-05 仍为 Open,不能视为 1.19.0 已发布修复)。可优先尝试改用浏览器信任证书的 HTTPS 地址访问 Dify,替代原来的 HTTP 地址。

注意事项:仅打开 Nginx HTTPS 开关而不配置有效证书与密钥,无法完成 HTTPS 部署;已配置的 CONSOLE_WEB_URL、CONSOLE_API_URL 等公开地址也需同步改为 HTTPS。若已使用可信 HTTPS 仍报错,需进一步区分是否为浏览器兼容性问题。

问题场景

用户在 Docker 自托管的 Dify 1.19.0 中编辑工作流,进入问题分类器(Question Classifier)节点新增分类时触发该报错,表现为分类无法添加、节点功能异常。根据讨论,该问题与另一 Issue #44931 中“分类新增失败”的表现一致。

报错原文

40tav8v8svdom.js:1 Uncaught TypeError: crypto.randomUUID is not a function
    at 40tav8v8svdom.js:1:3414
    at produce (2b1bwbp5bbvci.js:1:14112)
    at 40tav8v8svdom.js:1:3389
    at 3daa9armur3r5.js:1:2630
    at onClick (1d9k90gcb3_pm.js:1:1846)

原因分析

新增分类时,前端分类列表组件直接调用 crypto.randomUUID() 生成分类 ID,未提供兼容回退。该 API 只在安全上下文(secure context)中可用:当通过局域网 IP 的 HTTP 地址访问时,window.isSecureContext 为 false,crypto.randomUUID 不存在,因此在更新分类列表前抛出异常。这是基于 Issue 讨论定位到的可能原因,PR #44935 的兼容修复尚未合入。

环境排查

  • 确认 Dify 版本是否为 Issue 报告的 1.19.0(或其他未合入兼容修复的版本)。
  • 确认浏览器访问 Dify 控制台的地址:是否为 http:// 局域网 IP 或其他非安全上下文地址。
  • 确认页面是否为 isSecureContext,以及 crypto.randomUUID 是否存在。
  • 如使用 HTTPS,确认证书是否被浏览器信任、Nginx 证书与私钥是否已正确配置,以及 CONSOLE_WEB_URL、CONSOLE_API_URL 等公开地址是否已改为 HTTPS。
  • 记录浏览器版本;若在可信 HTTPS 下仍复现,需据此判断是否为浏览器兼容性问题。

解决步骤

  1. 在报错页面打开浏览器开发者工具控制台,执行只读检查:window.isSecureContext 与 typeof globalThis.crypto?.randomUUID。若分别返回 false 和 "undefined",即可印证上述原因。
  2. 可优先尝试:不再使用原来的 HTTP 地址,而改用浏览器信任证书的 HTTPS 地址访问 Dify。
  3. 在 Docker 部署中启用 Nginx HTTPS:将 NGINX_HTTPS_ENABLED=true,并设置 NGINX_SSL_CERT_FILENAME=dify.crt、NGINX_SSL_CERT_KEY_FILENAME=dify.key。
  4. 将证书与私钥放入 docker/nginx/ssl/ 目录。
  5. 将已配置的 CONSOLE_WEB_URL、CONSOLE_API_URL 等公开地址改为 HTTPS,重启相关服务后通过新的 HTTPS 地址访问。
  6. 跟踪 PR #44935 的合入状态;在合入发布前,不要将其视为已可用修复。

验证方法

在 Dify 问题分类器节点中重新点击新增分类,确认不再出现 TypeError: crypto.randomUUID is not a function,且新分类能正常加入并显示。同时可在控制台再次确认 window.isSecureContext 为 true、typeof globalThis.crypto.randomUUID 为 "function"。若已使用可信 HTTPS 仍复现,需补充浏览器版本及上述检查结果继续排查。

参考来源

langgenius/dify #45643

Issue 讨论中引用的相关链接:PR #44935;Issue #44931;Issue #45147 相关评论。

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 33040

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注