30个基础报错,5大错误类型,一招搞定comfyUI报错问题
解决报错三步骤:发现问题——定位问题——解决问题
5大报错类型:基础问题、工作流问题、网络问题、模型问题、环境问题。
一、基础问题
1、工作流没有报错,但是出图效果差的问题。
那就得知工作流可以跑通,不存在模型不匹配等问题,那大概率就是在节点的使用方式/参数设置出了问题。
eg:如下图,该问题没有报错,但是结果不好,先从宏观角度上看,工作流是简单的文生图,使用到了ControlNet来进行出图,由于工作流可以跑通,不存在模型不匹配,那么问题就大概率出现在ControlNet中,而这里用到的ControlNet模型是不是线稿的类型?通过该思考过程,就可以定位到问题上。

这里我们知道ControlNet的一个注意事项,就是ControlNet模型需要跟预处理器模型对应,所以说这个模型很可能就出了问题。

2、工作流节点缺失问题
一般我们通过使用别人的工作流时,经常会遇到自己没有安装工作流中使用到的一些插件,那么就会导致节点爆红,无法使用。
解决方法:
第一种:通过manager管理器进行安装插件,清确保自己的网络没问题!
(使用启动器的,在启动器里也可以安装插件)
第二种:在Github、huggingface等网站去手动安装插件。
找到下载该工作流的地址,通过预览工作流,找到这个工作流中使用的插件,或者去询问其他可能知道的人或AI。
(第二种情况是用在如果通过manager管理器中找不到该插件,那有可能是该插件是新出来的,manager管理器没有更新出来该插件。)

3、内存、显存不足问题
解决办法:由于这种报错并不是因为显存不足的问题,我们可以通过增加内存解决,而内存除了硬件增加内存条之外,可以通过增加虚拟内存解决。

像这种代码报错问题怎么解决?
根据解决报错三步骤走,我们就能够将这种代码报错的问题给理清楚解决思路。

这是代码部分,为了看的清楚些,转成文字了:
Error occured vhen executing GroundingDinoSANSegment (segment anytmino) :
【这一部分是报错的主要位置,错误位置在GroundingDinoSANSegment (segment anytmino)这里】
Allocation on devicce o vould execed allowed memory. (out of memory )
Currently allocated : 3. 99 GiB
Reouested : 1024. 00 MiB
Device linit : 6. 00 GiB
Free (accordiing to CUDA) : 0 bytes
PyTorch linit (set by user-supplied nemory fraction)
:17179869184.00 GiB
【这里是报错的错误内容,我们通常就是看这里理清思路去解决问题的关键。而这里看到GB、MB就很明显是显存问题;而且看到(out of memory ) 翻译过来就是“内存不足”】
File "D: \xhg_ComfyUI\ComfyUI\execution.py", line 151, in recursive_execute output_data, output_ui =get_outuput_data(obj, input_data_all)
File "D: \xhg_ComfyUI\ComfyUI\ ComfyUI\ execution. py, line 81, in get_outuput_data retumn_values = map_node_over_list(obj, input_data_all, obj_FUMCTION, allow_interrupt=True)
……
【这里是代码部分,就是一行一行代码执行的,第一行代码可能调用第二行代码,第二行代码调用了第三行代码,第三行代码出错了后,他就会往上一次一次的反馈,所以这里的代码部分都会报错。】
4、尺寸不足问题(蒙版不存在、图片裁剪后为0)
首先定位到zero-size array to reduction operation minimun which has no identity 这里,zero-size就是尺寸为0,array翻译过来就是矩阵,那么zero-size array就是为0尺寸的图片,那这肯定就有问题了,所以可以通过查看工作流到底是因为蒙版不存在,还是图片裁剪后为0了,通过该方式可以解决问题。

5、使用CPU和CUDA的问题(CPU和GPU)
这里首先可以看到报错位置在KSampler中,报错信息是CPU和CUDA,而CPU和CUDA是CPU和GPU,也就是处理器跟显卡。通过翻译知道“数据放到了两个位置,没有办法一起计算了”,所以,在工作流中大概率存在一个位置需要我们指定数据放到那里,只要将数据放到同一个位置,他就能进行计算了。反正大概率就是需要设置是使用CPU计算还是GPU计算。

典型例子,在SAM加载器节点中,此时选择prefer GPU即可解决该问题。

二、工作流问题
1、节点缺少连接问题
看到KSampler就知道是k采样器节点出现问题,看到有个missing,意思是缺少,那么缺少的大概率就是该节点缺少必要的输入,所以将缺少的地方连起来就行了。

arguments:参数
我们知道KSampler节点有很多输入、输出、参数。
arguments: 'seed', 'steps', 'sampler_name', and 'scheduler'
参数:种子数、步数、采样器、调度器。
就是说在k采样器中缺少这些参数,也就是我们的工作流要连起来,就需要把没连起来的地方连起来。

2、装完插件后,依然没有导入问题
这个是你在manager管理器安装完缺失的插件之后,重新打开,依然没有导入,那么就存在两种可能。
第一种:根本没下载好插件。
可能由于网络问题没下载好插件,但在下载插件时,他可能会在你的custom_nodes文件夹创建一个同名的文件夹,从而让你的manager管理器能够检索到这个文件夹,但是因为里面是空的,所以会报错,没办法导入。
解决办法:删除该文件夹重新下载。
第二种:环境不足以支撑这个插件运行。
即使插件完整的下载好了,但是由于你的环境不足以支撑这个插件的运行,这个时候就需要在启动comfyUI的时候,观察后台的命令行去定位到错误的原因。
解决办法:安装缺失的环境。
第一种情况:
如下图,虽然在manager中安装成功了,但是你需要到你的插件列表里面去看。

比如,进入到comfyUI/custom_nodes文件夹内,新建一个【比如asd】的文件夹,那么在comfyUI中,他就会把这个asd文件当成一个插件,

但asd文件夹里面是空的,什么都没有,所以在comfyUI-manager里面显示了你安装成功了,但是它真的不一定安装成功了。

所以安装完这个插件,你得点进去看里面是否有文件,如果没有文件,那你就要把这个文件夹删了,重新下载。

第二种情况:
如果custom-nodes文件夹下的插件文件夹里面有文件的话,也就是你的原码插件的原码都已经下载完了,但是它还是在这个地方是爆红了,那我们就需要定位到这个问题是什么了。

我们在启动comfyUI的时候,可以看到他有一个加载的过程,

比如后面你导入插件导入成功了,而(IMPORT FAILED)这个就是你导入失败的一个插件。

而在前面他为什么导入失败,在这里看到这是comfyUI layer diffusion,就是导入失败的那个插件,

那么后面就会有他的报错,当你定位到了这个报错,你就尝试根据这个报错去解决问题。
这个地方的报错是属于环境的问题,后面有解决方法。

第一步:去看插件到底安装成功与否
第二步:看启动的comfyUI后台

2、值不在列表(list)中的问题
解决办法:重新选择
- Value not in list: method: 'False' not in ['stretch', 'keep proportion', 'fill / crop', 'pad']
- 值不在列表中:方法:'False' 不在 ['stretch', 'keep proportion', 'fill / crop', 'pad']
就是这个“false”这个值不在 ['stretch', 'keep proportion', 'fill / crop', 'pad']这4个可以选的东西里面。

重新选一下就能解决问题。

list就是列表的意思,比如在KSampler里面可以选择不同的采样器,比如dpm、Europe……他会有很多选项,这些选项在代码里面叫做list列表,也就是以列表的形式把你能选的东西全部列出来,然后你在里面选择你想要的一个东西。

假如你的工作流出了一个BUG,它里面让你选的东西是1234,但是你打开这个工作流发现这个地方是0,0不在1234里面,他就会给你报错,0不在这个list里面。那我们只需要点进去重新选择,在1234中任选其中之一,那么这个错误他就不会存在了。
三、网络问题
网络问题通过调整网络都可以解决。
解决网络问题首先是需要知道这是个网络问题,那么我们可以通过看见关键词知晓这是一个网络问题。
1、http(关键词)
这是典型的网络问题代表,看到http就定位为网络问题,从报错的内容可以看到是无法连接,解决办法就是把网络调整好,如果自己不会就去淘宝找人给你解决一下。

2、connection(关键词)
报错翻译就是本地不存在文件,需要检查网络连接让它可以自动下载,看到connection就定位为网络问题,去解决就行了。
中间有个Internet connection,你要确定你的网络连接是好的,翻译完了就知道是网络问题了,网络的问题你就去解决你的网络问题。

看到connection就想到是网络问题,具体原因是因为网络连接中断,导致下载的文件尺寸不匹配。

3、URL(关键词)
看最下面的,看到URL就是网络问题,还是同样的去解决网络问题。
这里可以看到它上面给你定位到了节点,中间没有报错信息,是空白的。下面直接是文件报错。这个部分就说明作者在写这个代码的时候,他没有做好断言这个操作。

断言,就是作者在写到这句代码的时候意识到你可能在这里出错,所以他会在这里加一个假如你出错的话,然后怎么怎么的,就是加一句出错了该怎么办的话。

像前面的那些comfyUI报错信息都是有报错内容的(报错了怎么办),这里作者就没有写。
那么这个代码你就往最下面的找,最下面就是他报错的根本原因,

因为前面讲过了,它是一层一层往上递进的,所以当出现URL的时候,你就要知道这是一个网络问题,你可以通过你的网络去解决这个问题。

4、SSL、unable to access(关键词)
unable to access没有能力去抵达,没有能力去抵达网络,他就到不了那个地方。你还是得去解决网络问题。
比如这里ssl出错。

四、模型问题
1、缺少模型文件问题
首先看到报错为“No such file xx”就可以知道这个是缺少文件,后面给出的就是文件的路径,所以可以到huggingface去尝试查找这个模型,因为文件后缀是.pth,所以说这是个模型文件,下载后放到指定位置就行。

2、缺少相应的大模型问题
首先看到ckpt_name就要知道这个是Checkpoint(大模型)的意思,那么not in list不在列表中,就是你的列表里面不存在这个模型,解决办法就是要么换一个模型,要么去下载指定名称的模型。
ckpt就是大模型的意思,这里的报错信息就是你的大模型它不在这个列表里面,你这个列表里面只有这个麦橘v7的一个模型,而你这个地方选择的是“none”,等于说你这个地方是空的,你拖入这个工作流的时候,它预设置的模型并不在你的本地,所以说你还是缺少这个模型,你去下载这个模型就可以了。

3、NoneType模型不匹配问题
看到“NoneType”和“Checkpoint”就要联系到会不会是大模型的问题,从下面的报错可以看到是从模型中使用.lower()方法,但是不存在,所以说明有可能就是大模型的问题,宏观来说就是模型不匹配。

比如使用SDXL的CN跟使用了SD1.5的预处理器不匹配。

4、缺少模型问题(紫色框)
报错除了红色框就是紫色框,紫色框基本就是缺少模型的问题。
红框就是代码的问题或者缺少输入。
这里虽然能显示名称,但是可能你本地只有文件夹,没有文件,就是缺少模型。

五、环境问题
1.No module环境缺失问题
看到“No module”第一反应就是环境缺失,除此之外就是插件源代码的问题,大部分情况就是你的Python环境不全,缺少这个module,那么就通过pip install来安装缺失的环境。
看到AIO_Preprocesor:就是预处理器节点。然后有个No module named的“ControlNet_aux”,就是你没有这个预处理器,你的环境没有这个东西,你就没有办法去用这个插件。那么你就通过你的Python环境去pip install就可以了,这个pip install就是你安装环境的命令。

2、torch版本不匹配问题
通过翻译知道,你已经安装torchaudio,但是他现在跟你安装的torch版本不匹配,那么你就卸载掉这个torchaudio,重新再安装,这样就能够自动检索合适的版本进行安装。
这里wheel指的就是我们的包,这个叫做torchaudio的这个包,它位于你电脑上的这个位置,然后他说invalid,invalid的意思就是无效的,它的意思就是你的这个包跟你当前的环境不匹配。怎么办呢?卸载再重装呗。因为Python工具相对智能,你在装这个包的时候,你不指定一个版本,它会给你装相对较新的一个版本,而且这个包它是跟你当前使用到的环境是匹配的,它是要跟我们的torch进行匹配的,包括给你的Python版本也要匹配的。这个操作只需要你去pip install torch audio输入,他就会自动下载一个跟你环境相匹配的包。所以说你把它卸载再重装就可以了。

3、_init_.py问题
这里可以看到是缺少一些东西,没有办法导入,定位到最后的报错为_init_.py,这个文件夹是插件作者写代码的时候会有一个常量的导入代码,所以这个是插件的根本文件,如果这个都缺少,那可定是这个插件并没有下载成功。重新安装这个插件即可。

每个插件里面都有一个_init_.py的文件,

我们可以把这个文件看成是一个接口,前面连接着comfyUI,后面连接着该插件。我们的comfyUI需要通过这个接口才能联系到我们这个插件。

所以说,当你报错出现Init的这个问题时,可能你连下载都没下载成功。连第一步他要给你做个接口他都没有给你安装上。所以你就直接重新下载这个东西就可以了。

4、comfy问题
从报错前可以发现,是module没有提供xxx,而这个module前面是comfy,这个comfy是comfyUI官方源码提供的一个东西,所以第一反应应该是“是不是comfyUI版本太低了,所以这东西还没更新进去”,那么你通过个您comfyUI就可以解决这个问题。
