Desktop 快速开始
启动 01MVP Tauri 桌面模板并连接现有 Hono/oRPC 后端
01MVP Desktop 模板位于 products/01mvp/apps/desktop,包名是 @01mvp/desktop。本地开发时先跑 Web/API,再跑桌面端。
这篇只负责把项目跑起来。改名称、Bundle ID、图标、签名和发布配置,后面几篇再处理。
准备环境
桌面模板需要 Node.js、Vite Plus、Rust 和 Tauri CLI。仓库已经在 package.json 里声明了 Tauri CLI,Rust 要你自己装。
| 目标 | 今天至少需要 | 可以晚点再准备 |
|---|---|---|
| 看桌面 UI 和普通 API | Node.js、Vite Plus、01MVP Web/API | Rust、签名证书、自动更新端点 |
| 跑 Tauri 原生窗口 | Rust、Cargo、目标平台系统依赖 | 正式签名、公证、安装包分发 |
| 做 macOS 公开分发 | Mac、Apple Developer Program、Developer ID、公证流程 | Mac App Store 上架资料 |
| 做 Windows 公开分发 | Windows 验证环境、代码签名证书 | Microsoft Store 上架资料 |
| 做自动更新 | 稳定下载域名、更新 JSON、签名配置、release 文件托管 | 多区域 CDN 和灰度发布策略 |
安装依赖:
vp install确认 Rust 可用:
rustc --version
cargo --version如果这两个命令跑不通,先按 Tauri prerequisites 装好 Rust 和系统依赖。
准备桌面端环境变量
复制模板文件:
cp products/01mvp/apps/desktop/.env.example products/01mvp/apps/desktop/.env.local常用配置:
| 变量 | 默认值 | 用途 |
|---|---|---|
VITE_DESKTOP_APP_NAME | 01MVP Desktop | 桌面窗口和页面里显示的应用名 |
VITE_DESKTOP_SERVER_URL | http://localhost:7001/api | API、auth、oRPC 的基础地址 |
VITE_DESKTOP_WEB_URL | http://localhost:7001 | 打开网页、价格页或用户后台时使用 |
VITE_DESKTOP_* 会进入桌面前端 bundle。不要放数据库、支付、邮件、Better Auth secret 或 Cloudflare secret。
准备后端 origin
桌面端的浏览器预览默认运行在 http://localhost:7410。后端需要允许这个 origin,否则登录和受保护 API 会失败。
在 products/01mvp/packages/config/.env 里确认:
DESKTOP_ALLOWED_ORIGINS="http://localhost:7410,http://127.0.0.1:7410,tauri://localhost,http://tauri.localhost"本地默认值已经覆盖常见开发场景。生产分发时,把实际桌面 origin 加进去。
启动 Web/API
先启动 01MVP Web/API:
vpr @01mvp/product#dev默认监听:
http://localhost:7001API 地址是:
http://localhost:7001/api启动桌面浏览器预览
另开一个终端:
vpr @01mvp/desktop#dev浏览器预览默认在:
http://localhost:7410这个模式就是普通浏览器页面,适合先看看 UI、登录表单、API 状态和设置面板。浏览器里没有真实 Tauri runtime,模板会用 fallback 存偏好。
启动 Tauri 原生窗口
Tauri 原生开发窗口:
vpr @01mvp/desktop#tauri:dev这会编译 Rust crate 并打开真正的桌面窗口。托盘、app data 目录、Tauri commands、process/opener plugin 只能在这个模式里验证。
第一次跑起来后看什么
打开桌面端,先检查这几项:
- 页面能显示
API status - 登录表单能提交
- 登录后能读到
account.profile - 设置面板能保存 API server URL 和 Web URL
- Tauri 原生窗口里能打开 app data 目录
- 退出并重新打开后,本地偏好仍然存在
常见问题
页面打开了,但 API status 挂了
先看 Web/API 是不是还在跑:
curl http://localhost:7001/api/rpc/health/live再看 VITE_DESKTOP_SERVER_URL 是不是指向同一个服务。
登录成功后 profile 还是 401
查这几个:
DESKTOP_ALLOWED_ORIGINS有没有包含桌面端 originVITE_DESKTOP_SERVER_URL是不是以/api结尾- 浏览器或 WebView 请求有没有带
credentials: "include" - 服务端有没有重启过,新 env 是不是已经生效
Tauri dev 编译报错
先跑 Rust 检查:
vpr @01mvp/desktop#tauri:check如果是系统依赖缺了,回 Tauri prerequisites 按平台补。
验证命令
vpr @01mvp/desktop#type-check
vpr @01mvp/desktop#lint
vpr @01mvp/desktop#test
vpr @01mvp/desktop#build
cargo check --manifest-path products/01mvp/apps/desktop/src-tauri/Cargo.toml这篇文档有问题?