Skip to content

[BUG] 独立模式下 bridge 不可用被报成「传输错误」,无法与设计如此区分 #668

Description

@nanami7777777

💻 操作系统

macOS (Apple Silicon, arm64)

📱 QQNT 版本

6.9.95-48517

📦 QCE 版本

6.2.8(NapCat v4.18.19,官方完整包 NapCat-QCE-macOS-arm64)

📥 安装方式

官方发布包(Shell 完整包),运行 ./start-standalone.sh

🤔 发生了什么?

独立模式(standalone)下,Web 界面能正常打开、也能浏览已导出的记录,但任何需要实时 QQ 数据的页面都会报同一个错误:

bridge 传输错误: error sending request for url (http://127.0.0.1:40654/rpc)

这个措辞把**「设计上就没有 bridge」说成了「bridge 传输失败」**,用户无法区分二者,会一直去找网络/端口/代理的问题。

🔄 复现步骤

  1. 运行 ./start-standalone.sh
  2. 浏览器打开 http://localhost:40653/qce 并用令牌登录
  3. 打开「群聊」「好友」「最近联系人」任一页面,或点击导出新记录

✨ 期望结果

独立模式本来就不提供实时数据(README.txt 也写了「不支持导出新的聊天记录」),这是预期行为,但提示应该诚实:

  • 后端返回一个专门的区分性错误(例如 bridge_unavailable / standalone_mode),而不是通用的「传输错误」;
  • 前端据此给出明确文案,例如「当前为独立模式,无法获取实时数据。请改用 ./launcher-user.sh 完整模式并登录 QQ」;
  • 更进一步:独立模式下把依赖实时数据的入口禁用或置灰,而不是让用户点了才报错。

📋 错误日志

复现请求(已带令牌):

GET /api/groups
{"success":false,"error":{"type":"API_ERROR",
 "message":"bridge 传输错误: error sending request for url (http://127.0.0.1:40654/rpc)",
 "context":{"code":"GET_GROUPS_FAILED", ...}}}

GET /api/system/status
{"success":true,"data":{"online":false, ...}}

logs/qce-runtime.log 里的相关行 —— 注意第 3 行看起来像是「bridge 已就绪」,实际没有任何进程在监听:

[qce-server]  INFO [QCE] Starting QQ Chat Exporter Server v6.2.8 (Rust)
[qce-server]  INFO [QCE] NapCat bridge: http://127.0.0.1:40654
[qce-server]  INFO [QCE] HTTP server listening: http://localhost:40653

验证:lsof -nP -iTCP:40654 -sTCP:LISTEN -t 无输出。

🔍 已排除的原因(供参考,避免重复排查)

不是代理问题。 本机 HTTP_PROXY=http://127.0.0.1:61678 且未设 NO_PROXY,我起初怀疑 reqwest 把回环地址也送进了代理。对照实验证明不会:在 40654 起一个假 bridge,以同样的环境(HTTP_PROXY 存在、无 NO_PROXY)启动独立模式后请求直达 40654 并成功返回:

环境: HTTP_PROXY=http://127.0.0.1:61678(无 NO_PROXY)
假 bridge 收到: POST /rpc {"id":1,"method":"GroupApi.getGroups","params":[false]}
GET /api/groups → {"success":true,"data":{"groups":[], ...}}

所以根因单纯是独立模式没有 bridge:qce-standalone.mjs 只 spawn 了 qce-server,未设置 QCE_BRIDGE_ENDPOINT,Rust 端回落到默认的 40654;而 40654 只有完整模式下由 plugins/qq-chat-exporter/runtime/rustBridge.mjscreateNapCatBridge() 在 NapCat 进程内创建。

📎 日志和截图确认

  • 已确认日志中不含令牌、密码等敏感信息

✅ 检查清单

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions