TypeError: Cannot use ‘in’ operator to search for ‘transfer_method’ in

当 Dify 工作流的 Start 节点包含可选的单文件输入,且该输入带有 default: '' 时,在测试运行面板中保持文件为空并点击 Test Run,前端会在处理文件输入时抛出 TypeError: Cannot use 'in' operator to search for 'transf

快速结论:当 Dify 工作流的 Start 节点包含可选的单文件输入,且该输入带有 default: '' 时,在测试运行面板中保持文件为空并点击 Test Run,前端会在处理文件输入时抛出 TypeError: Cannot use 'in' operator to search for 'transfer_method' in,导致界面卡在 Running。优先排查前端输入归一化逻辑与 Start 节点的默认值配置。

适用环境:Dify 1.18.0;自托管部署(Docker);浏览器端 Web 工作流测试运行面板。Issue 未提供操作系统、Python、CUDA、显卡或依赖版本信息。

最快修复方案:暂无确认的一步修复方案。Issue 中验证过的临时规避方式为:先在空文件输入中上传一个文件,再将其删除,之后工作流可正常执行。可优先尝试该操作作为临时绕过。

注意事项:该临时操作仅是规避手段,不会修正 default: '' 引发的根因;Issue 讨论指出前端应将空的可选文件值视为未设置,但该修复尚未在讨论中确认落地。另外,Issue 未确定是哪个创建或编辑路径写入了空字符串默认值,因此在删改存储中的工作流数据前需谨慎。

问题场景

用户在 Dify 中创建的工作流,其 Start 节点包含一个单文件输入,并设置为可选(required: false),连接到 Output 节点。打开工作流测试运行面板后,不填写该文件输入,直接点击 Test Run,工作流测试运行无法完成。

用户对比导出的 .ifpkg 文件发现:可正常运行的版本中该输入只有 type: file 与 required: false;无法运行的版本多出 default: '' 属性。

报错原文

Uncaught TypeError: Cannot use 'in' operator to search for 'transfer_method' in
    at Array.forEach (<anonymous>)
    at onClick (...)

同时表现为测试运行面板一直停留在 Running 状态。

原因分析

根据 Issue 讨论中对前端代码路径的分析,可能原因如下:

  • 测试运行面板会把 Start 节点中已定义的默认值复制到输入状态,'' 也会被一并带入。
  • 处理输入时,getProcessedInputs() 只跳过 null 和 undefined,空字符串不会被跳过;随后对单文件输入执行 'transfer_method' in inputValue,当 inputValue 为 '' 时会抛出上述 JavaScript 错误。
  • 面板在处理这些输入之前已调用 onRun(),因此界面进入 Running 状态,但工作流执行并未真正提交。

因此该问题指向前端输入归一化,而不是 Output 节点执行失败。至于 default: '' 是由哪条创建或编辑路径写入的,Issue 讨论中尚未确定。

环境排查

  • 确认 Dify 版本是否为 1.18.0,以及是否为自托管 Docker 部署。
  • 检查工作流导出的 .ifpkg 中,目标文件类型输入是否带有 default: ''。
  • 确认 Start 节点中该输入确实为单文件类型,且设置为 required: false。
  • 在浏览器开发者工具 Console 中确认是否出现上述 transfer_method 相关 TypeError。

解决步骤

  1. 打开工作流测试运行面板,保持可选文件输入为空状态下先不点击 Test Run。
  2. 在该文件输入中上传任意一个文件。
  3. 随后将该文件删除,使输入回到空状态。
  4. 再点击 Test Run,验证工作流是否能够成功执行。该序列是 Issue 中用户实际验证可行的临时规避流程。
  5. 如需根治,可优先尝试由维护方在前端文件处理前将空的可选文件值视为未设置,并为“缺失默认值”和 default: '' 两种情况补充回归测试;该修复方向来自 Issue 讨论,尚未确认已发布。

验证方法

在浏览器开发者工具 Console 中不再出现 TypeError: Cannot use 'in' operator to search for 'transfer_method' in,且测试运行面板不再停留在 Running,工作流能够正常完成输出,即可认为问题已绕过或修复。

参考来源

langgenius/dify #44797

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 30755

发表回复

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