修复报错

This commit is contained in:
2026-04-20 05:14:50 +00:00
parent d2a059d57a
commit 2d0a267729
12 changed files with 390 additions and 39 deletions

View File

@@ -0,0 +1,63 @@
# Spacetime 开发连接地址热修 2026-04-20
## 背景
当前前端账号、存档和资料库链路已经切到 SpacetimeDB。
但本地开发默认配置存在一处关键错配:
- 默认数据库名是 maincloud 上的 `xushi-p4wfr`
- 默认 `VITE_SPACETIME_URI` 却写成了 `ws://127.0.0.1:3000`
- 同时 `npm run dev` 的 Vite 开发服也默认占用 `127.0.0.1:3000`
结果是页面启动后,浏览器会把账号 WebSocket 误连到 Vite而不是实际的 SpacetimeDB 服务。
这会直接表现为:
- 页面长时间停留在“正在建立账号连接...”
- 或者账号连接相关逻辑异常,但 `npm run dev` 终端表面上看起来前后端都已经启动
## 根因
本次问题不是 `server-node` 编译失败,而是前端默认环境变量错误:
- `src/spacetime/client.ts` 内置默认 URI 错误
- `.env.example` 示例值错误
- `scripts/dev-node.mjs` 没有把正确的 Spacetime 默认值显式注入启动环境
## 修复
本次做了三处最小修复:
1. `src/spacetime/client.ts`
- 默认 `VITE_SPACETIME_URI` 改为 `wss://maincloud.spacetimedb.com`
- 默认数据库名继续保持 `xushi-p4wfr`
2. `scripts/dev-node.mjs`
- 当本地未配置时,自动注入:
- `VITE_SPACETIME_URI=wss://maincloud.spacetimedb.com`
- `VITE_SPACETIME_DATABASE_NAME=xushi-p4wfr`
- 启动日志增加当前使用的 Spacetime URI 和数据库名,便于排查
3. `.env.example`
- 示例值改为 maincloud URI
- 补充说明:若要连本地 `spacetime start`,需在 `.env.local` 中显式覆盖为 `ws://127.0.0.1:3000`
## 验证
已完成:
- `npm run dev`
- Vite 正常启动到 `http://127.0.0.1:3000`
- `server-node` 正常启动到 `:8081`
- 启动日志会明确打印当前 `VITE_SPACETIME_URI``VITE_SPACETIME_DATABASE_NAME`
- `npm run check:encoding`
## 结论
默认开发链路现在会优先连到和默认数据库名一致的 maincloud Spacetime 服务,不再把账号连接误打到本地 Vite 端口。
如果后续要切回本地 SpacetimeDB只需要在 `.env.local` 中显式覆盖 URI不需要再改代码。