00 / 00

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 和普通 APINode.js、Vite Plus、01MVP Web/APIRust、签名证书、自动更新端点
跑 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_NAME01MVP Desktop桌面窗口和页面里显示的应用名
VITE_DESKTOP_SERVER_URLhttp://localhost:7001/apiAPI、auth、oRPC 的基础地址
VITE_DESKTOP_WEB_URLhttp://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:7001

API 地址是:

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 有没有包含桌面端 origin
  • VITE_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

这篇文档有问题?