必须用vscode打开整个项目根目录(含tauri.conf.json和src-tauri),且根目录需有cargo.toml声明[workspace] members = ["src-tauri"],再执行rust analyzer: reload workspace重载。

VSCode 默认打不开 Tauri 项目的 Rust 部分,main.rs 报 “unresolved import”、跳转失效、类型推导全断——这不是你装错插件,而是 Rust Analyzer 根本没看到 src-tauri 是个 crate。
为什么打开项目后 Rust 代码一片红?
VSCode 打开的是 src-tauri 子目录,或根目录下没有 Cargo.toml,导致 Rust Analyzer 以单文件模式运行,完全忽略 tauri.conf.json 里声明的后端路径。
- 必须用 VSCode 打开**整个项目根目录**(即包含
tauri.conf.json和src-tauri的文件夹),不能只打开src-tauri - 根目录下必须存在
Cargo.toml,内容只需:[workspace] members = ["src-tauri"]
- 改完后按
Ctrl+Shift+P→ 输入Rust Analyzer: Reload Workspace触发重载,别只关再开
Windows 下 cargo tauri dev 启动失败报 0xc0000135?
这不是编译错误,是运行时 DLL 缺失:链接器找不到 VCRUNTIME140.dll 等 MSVC 运行时。Tauri 构建的二进制依赖系统级 C++ 运行库,不是 Rust 自带的。
- 确认已安装 Microsoft C++ Build Tools 或 Visual Studio 2022/2023 的 “C++ build tools” 工作负载
- 不要只装 Rust 和 Node —— 即使
rustc --version成功,cargo tauri build仍可能在此卡住 - 验证方式:在终端运行
cl /?,能输出帮助说明 MSVC 已就绪;若提示“不是内部或外部命令”,说明环境变量没生效,需重启终端或手动运行vcvars64.bat
tauri dev 启动后前端改代码不热更新?
热更新(HMR)根本不在 Tauri 控制范围内,它只是个壳。真正干活的是 Vite / Webpack,而 Tauri 只负责把 devPath 指向那个开发服务器。
- 检查
tauri.conf.json中build.devPath:Vite 项目应为"http://localhost:5173",不是"http://localhost:1420"或"src" - 确保你已**单独启动了前端服务**:比如
pnpm run dev(Vite)或npm run serve(Vue CLI),且端口与devPath完全一致 - 不要直接双击
target/debug/xxx.exe—— 这绕过所有开发服务器,自然没 HMR,也看不到 console.log
rust-analyzer 提示 “expected struct, found enum” 怎么办?
常见于调用 tauri::api::dialog::ask() 等返回 Result<bool _></bool> 的函数时,Rust Analyzer 在宏展开和泛型上下文中误判类型,尤其在 #[tauri::command] 函数体内。
- 避免写
if ask() { ... }这类隐式解包,先显式绑定:let res: Result<bool _> = ask();</bool> - 升级
rust-analyzer插件到 v2024.6.17+,旧版对 Tauri 的 proc-macro 支持极弱,类型提示频繁掉线 - 如果用了自定义命令参数结构体,确保该结构体实现了
DeserializeOwned,否则反序列化失败也会触发类似误报
最常被忽略的一点:Tauri 开发不是“装完插件就能跑”,它本质是三段耦合——前端构建服务器、Rust 后端进程、WebView 渲染容器。任何一段没对齐端口、路径或生命周期,都会表现为“代码没变但界面不动”“弹窗不出现”“控制台空空如也”。先盯死 devPath 和 pnpm run dev 是否同时跑着,比反复重装插件有用得多。











