【SD WebUI踩坑】启动报错 Expecting value: line 1 column 1 (char 0) 的终极解决方案


0. 前言
最近给 Stable Diffusion WebUI 更换了一个新的网络环境,结果噩梦开始了。启动时后台日志看起来正常,或者偶尔报个错,但一打开网页端,右侧就开始疯狂弹出红色的报错框:
Error
Expecting value: line 1 column 1 (char 0)
折腾了一整天,试过删除 config.json、重置 styles.csv、扫描空文件、设置--xformers --gradio-queue 参数、甚至重装了 Python 环境,都没有解决。最后发现,这根本不是文件损坏的问题,而是 Python 环境与 Windows 系统网络设置之间的"沟通障碍"。
1. 问题现象
启动 webui-user.bat 后,控制台或浏览器端抛出 JSON 解析错误:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
有时候还会伴随另一个错误,提示无法连接本地服务:
ValueError: When localhost is not accessible, a shareable link must be created...
2. 原因分析(不仅是文件坏了)
大多数教程会告诉你这是因为 config.json 变成了空文件(0KB)。确实,断电会导致文件清空。但如果你检查发现文件都有内容,却依然报这个错,那么真凶只有一个:网络干扰。
核心逻辑:
-
自动协商失败 :当我们在 Windows 中开启网络加速时,Python 的
requests库会尝试自动读取系统的网络设置。 -
协议错乱 :如果网络工具软件和 Python 之间的协议握手失败(比如 Python 默认用 HTTPS,而本地端口只响应 HTTP,或者 SSL 证书验证失败),网络端口会返回一个 HTML 格式的报错页面 ,而不是插件预期的 JSON 数据。
-
解析崩溃 :Civitai Helper 或其他插件照旧地把这段 HTML 代码拿去当 JSON 解析,自然读不到第一行的
{,于是抛出Expecting value...。 -
误伤友军 :不仅外部请求崩了,连 WebUI 连接自己的
127.0.0.1也被强制走了加速通道,导致"自己连不上自己"。
3. 终极解决方案:在启动脚本中"硬编码"网络配置
既然让 Python "自动识别系统设置"不可靠,我们就直接在启动脚本里把网络参数写死。
这样做有三大好处:
-
独立性:无论你是否开启 Windows 系统的全局开关,WebUI 都会强制走你指定的稳定通道。
-
稳定性:显式定义的参数比自动抓取的要稳定得多,杜绝 HTML 报错。
-
避坑 :配合
NO_PROXY设置参数,彻底解决本地连接 (localhost) 和外部下载的冲突。
操作步骤:
第一步:确认你的加速端口
打开你的加速工具软件,在设置里找到 "本地端口" 或 "HTTP 端口"。
*****
- (请以你软件实际显示的为准)
第二步:修改 webui-user.bat
-
右键点击你的启动脚本
webui-user.bat,选择"编辑"。 -
在
call webui.bat这一行的上面,插入以下代码(请根据你的实际端口修改数字):@echo off
set PYTHON=
set GIT=
set VENV_DIR=:: ========================================================
:: 【核心修复代码开始】
:: 1. 强制指定网络通道端口 (解决 HTML 返回值导致的 JSON 解析错误)
:: 注意:这里通常都写 http://,即使是 HTTPS_PROXY 也建议写 http://
set HTTP_PROXY=这里填写
set HTTPS_PROXY=这里填写:: 2. 设置本地白名单 (至关重要!)
:: 这一行能防止 WebUI 尝试通过网络去连接 localhost,
:: 彻底解决 "ValueError: When localhost is not accessible" 错误
set NO_PROXY=127.0.0.1,localhost
:: 【核心修复代码结束】
:: ========================================================:: 你的启动参数
set COMMANDLINE_ARGS=--xformers --gradio-queue --disable-nan-checkcall webui.bat

第三步:保存并重启
-
保存文件。
-
关闭所有正在运行的 WebUI 黑色窗口。
-
双击
webui-user.bat重新启动。
4. 效果验证
改完后,你会发现:
-
报错消失:浏览器不再弹红框,后台不再报 JSON 错误。
-
下载正常:Civitai Helper 等插件可以正常通过你指定的端口下载模型元数据。
-
本地直连 :因为配置了
NO_PROXY参数,生成图片时的本地通信直接走直连,速度快且稳定。


5. 总结
如果你也遇到了删不完的配置文件、修不好的 Expecting value,请立刻检查你的网络环境。不要依赖系统的网络加速设置,直接在 bat 里"硬编码"环境变量,才是 SD WebUI 最稳的运行方式。
(笔记结束)
希望这篇笔记能帮到更多被这个问题折磨的朋友!如果还有其他 SD 相关的问题,随时来问我。