Skip to content

fix: 完善 WebUI 连接错误提示与后端端口占用处理 - #88

Open
Aibeto wants to merge 10 commits into
ttqftech:6.0+from
Aibeto:6-fix-webui-error-msg
Open

fix: 完善 WebUI 连接错误提示与后端端口占用处理#88
Aibeto wants to merge 10 commits into
ttqftech:6.0+from
Aibeto:6-fix-webui-error-msg

Conversation

@Aibeto

@Aibeto Aibeto commented Aug 27, 2026

Copy link
Copy Markdown

变更内容

前端(serviceBridge.ts)

  • 版本检查由原先仅判断接口是否可达,改为读取后端返回的版本号并进行比较:仅比对大版本号,小版本号不一致时仅给出警告,不阻断连接流程。报错信息中同时包含前端版本号与后端回传信息
  • 新增 fetchWithTimeout 方法(默认 5 秒超时),版本检查与登录请求均改用该方法,避免后端无响应时部分场景下连接流程永久阻塞
  • onerror 回调补充 connectResult(false),修复连接状态在部分场景下可能卡死在 Connecting 的问题
  • 修正接口命名拼写错误:ServeiceBridgeEvent -> ServiceBridgeEvent

后端(uiBridge.ts)

  • 监听 HTTP/WebSocket 服务的 error 事件,通过 errno 异常码(EADDRINUSE、EACCES)识别端口占用,同时保留字符串匹配作为兜底,命中后输出明确的错误日志说明原因,并主动退出进程

依赖与构建配置

  • koa 升级至 2.16.4,依赖链引入 generator-function 模块,同步更新 pkg 三平台打包配置的 assets,避免打包产物缺失该模块
  • 新增 pnpm-workspace.yaml,声明 allowBuilds(electron、utimes、vue-demi)
  • .vscodeTypeScript 默认格式化器更换为内置格式化器,serviceBridge.tsappStore.ts 中的大量变更来自格式化重排
  • appStore.ts 中版本提示文案由"服务器"调整为"后端",与实际架构表述一致

已知问题

  • uiBridge.ts#L208L209sleepprocess.exit(1) 不生效
  • 后端回传版本号缺少规则拦截,会出现类似 服务器 未连接 连接失败:前后端版本不匹配或端口非FFBoxService服务(前端 6.0-alpha ,后端 OK ) 的难绷的消息
Aibeto added 5 commits August 27, 2026 07:10
1.  新增带超时的fetch方法避免连接卡死,完善版本校验逻辑
2.  格式化代码
3.  新增pnpm工作空间配置文件,虽然实pnpm@8似乎并不需要,但是我一开始没注意到这一点,使用了pnpm@11,就当是战未来了(?
将generator-function的依赖资源加入到win、mac、linux三个平台的打包assets配置中,确保打包时可以正确携带该依赖
但是我确实没搞明白在没有这条的情况下为什么也有办法正常构建运行(
1. 修复VSCode TypeScript默认格式化器配置
2. 给pnpm工作区添加根包配置
3. 优化端口占用错误处理,添加1秒延迟后退出进程
4. 清理多余空白字符与导入冗余代码
1. 修正了ServeiceBridge的拼写错误为ServiceBridge
2. 新增直接读取errno异常码来检测EADDRINUSE和EACCES错误,替代原有的字符串匹配方式,提升检测准确性
1. 注释掉端口启动失败时的原始error日志输出
2. 补充版本不匹配错误的场景说明,包含非FFBoxService端口情况
@ttqftech

Copy link
Copy Markdown
Owner

不建议在没有实际功能变动的地方修改代码格式,这会使代码历史变得混乱,review 难度增加。
自动化的格式化工具往往会浪费较多屏幕宽度和高度。一般是建议手动调整,遵循原本的代码习惯,以可读性优先。(仓库中的格式化工具实际上是废弃定义)
你或许可以用 AI 去还原这些更改。

另外,“后端”是一个相当广泛的概念,语义精准性和普及程度是不如“服务器”的。如果文案中并非与“前端”形成对应关系,尽量保持“服务器”的称呼。注意文案中存在中英文之间缺失空格的情况。在未来有更好的方案解决这种格式问题之前还需保持这种习惯。

如非必要,不应新增或变更配置项和依赖。新增配置项或变更依赖容易导致技术债的堆砌,往往需要在后期反复检查为何引入某配置项(如 prettier)。对这些的行为应有明确的用途说明,以便后期排查问题。

Aibeto added 5 commits August 28, 2026 00:13
在ws的close和error事件处理中添加清除连接超时定时器
- 回退到 is-generator-function@1.1.0
- 删除声明包根目录 + allowBuilds(electron/utimes/vue-demi),撤销config/pkg.${platform}.config.json修改
统一typescript和javascript的代码格式化工具为prettier-vscode
@Aibeto

Aibeto commented Aug 27, 2026

Copy link
Copy Markdown
Author

依据 review 反馈 的修改

  • 撤销 serviceBridge.tsappStore.tsuiBridge.tsdocs/swagger.html 中无功能变动的格式化重排,保持与上游代码风格一致(08074ad
  • 撤回依赖及配置变更(16eabdd):
    • is-generator-function 由 1.1.2 回退至 1.1.0,移除随之引入的 generator-function@2.0.1,同步撤销三平台 pkg.*.config.json 中对应的 assets 配置
    • 删除新增的 pnpm-workspace.yaml
  • .vscode/settings.json 中 TypeScript 默认格式化器由废弃的内置 vscode.typescript-language-features 恢复为 esbenp.prettier-vscode,与 JavaScript 保持一致(21526dd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants