2.1 KiB
2.1 KiB
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 默认值显式注入启动环境
修复
本次做了三处最小修复:
src/spacetime/client.ts
- 默认
VITE_SPACETIME_URI改为wss://maincloud.spacetimedb.com - 默认数据库名继续保持
xushi-p4wfr
scripts/dev-node.mjs
- 当本地未配置时,自动注入:
VITE_SPACETIME_URI=wss://maincloud.spacetimedb.comVITE_SPACETIME_DATABASE_NAME=xushi-p4wfr
- 启动日志增加当前使用的 Spacetime URI 和数据库名,便于排查
.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
- Vite 正常启动到
npm run check:encoding
结论
默认开发链路现在会优先连到和默认数据库名一致的 maincloud Spacetime 服务,不再把账号连接误打到本地 Vite 端口。
如果后续要切回本地 SpacetimeDB,只需要在 .env.local 中显式覆盖 URI,不需要再改代码。