通过接口Api执行工作流报错如下,

got prompt
[Impact Pack] ComfyUI-Impact-Pack: Error on prompt - several features will not work.
'list' object has no attribute 'items'
[DEBUG] Inputs type: <class 'list'>
Exception in thread Thread-7 (prompt_worker):
Traceback (most recent call last):
File "/root/miniconda3/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/root/miniconda3/lib/python3.10/threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "/root/ComfyUI/main.py", line 176, in prompt_worker
e.execute(item[2], prompt_id, item[3], item[4])
File "/root/ComfyUI/execution.py", line 479, in execute
cache.set_prompt(dynamic_prompt, prompt.keys(), is_changed_cache)
File "/root/ComfyUI/comfy_execution/caching.py", line 157, in set_prompt
self.cache_key_set = self.key_class(dynprompt, node_ids, is_changed_cache)
File "/root/ComfyUI/comfy_execution/caching.py", line 80, in __init__
self.add_keys(node_ids)
File "/root/ComfyUI/comfy_execution/caching.py", line 92, in add_keys
self.keys[node_id] = self.get_node_signature(self.dynprompt, node_id)
File "/root/ComfyUI/comfy_execution/caching.py", line 97, in get_node_signature
ancestors, order_mapping = self.get_ordered_ancestry(dynprompt, node_id)
File "/root/ComfyUI/comfy_execution/caching.py", line 128, in get_ordered_ancestry
self.get_ordered_ancestry_internal(dynprompt, node_id, ancestors, order_mapping)
File "/root/ComfyUI/comfy_execution/caching.py", line 144, in get_ordered_ancestry_internal
self.get_ordered_ancestry_internal(dynprompt, ancestor_id, ancestors, order_mapping)
File "/root/ComfyUI/comfy_execution/caching.py", line 144, in get_ordered_ancestry_internal
self.get_ordered_ancestry_internal(dynprompt, ancestor_id, ancestors, order_mapping)
File "/root/ComfyUI/comfy_execution/caching.py", line 137, in get_ordered_ancestry_internal
input_keys = sorted(inputs.keys())
AttributeError: 'list' object has no attribute 'keys'
Cannot connect to comfyregistry.

但通过comfyui界面执行是正常的,这是因为自动隐式兼容处理了,工作流设计不规范,导致某些节点列表和字典返回值混淆,导出.json时,数据是严格按照JSON结构来的,没有GUI的自动纠正机制,所以会报错.

最后排查到 报错的节点如下


"25": {
"inputs": {
},
"class_type": "PulidEvaClipLoader",
"_meta": {
"title": "PuLIDEVAClip加载器"
}
},

由于25号节点 inputs为空,默认返回了空list,而非字典类型dict,但是PulidEvaClipLoader插件要求输入为字典类型

实际操作改为如下,增加默认值即可

  "25": {
"inputs": {
// 添加任意有效字段占位(例如模型路径)
"dummy_param": "none"
},
"class_type": "PulidEvaClipLoader",
"_meta": { "title": "PuLIDEVAClip加载器" }
}