VSCode默认不识别Tauri项目的Rust部分,因Rust Analyzer未指向含src-tauri的项目根目录;需在该根目录创建最小Cargo.toml(含[workspace] members=["src-tauri"]),并执行Reload Workspace。

VSCode 默认打不开 Tauri 项目的 Rust 部分,main.rs 里一堆“unresolved import”,跳转、补全、类型提示全失效——这不是你装错了插件,而是 Rust Analyzer 根本没看到 src-tauri 这个 crate。
为什么 Rust Analyzer 在 Tauri 项目里不工作
Rust Analyzer 只认 Cargo.toml 所在目录为 workspace 根。Tauri 项目默认把 src-tauri/Cargo.toml 当作后端 crate,但 VSCode 打开的是项目根(含 tauri.conf.json),而这个根目录通常没有 Cargo.toml。结果 Analyzer 退化成单文件模式,对 src-tauri 视而不见。
- 检查当前 VSCode 窗口打开的是否是含
tauri.conf.json和src-tauri的**最外层目录**,不是只打开了src-tauri子文件夹 - 在该目录下手动创建一个最小
Cargo.toml,内容仅需:
[workspace] members = ["src-tauri"]
- 保存后按
Ctrl+Shift+P→ 输入Rust Analyzer: Reload Workspace,或直接重启 VSCode
前端热更新失效:改了 Vue/React 文件没反应
这不是 VSCode 的锅,是 tauri dev 启动时没连上真正的前端开发服务器。Tauri 自己不跑 Vite/Webpack,它只是个壳,靠 devPath 去反向代理。
- 确认
tauri.conf.json中build.devPath是"http://localhost:5173"(Vite 默认)或"http://localhost:3000"(React/Vite 其他配置) - 确保你已单独运行
npm run dev(或vite、webpack serve等),且端口和devPath完全一致 - 不要用
tauri build && ./target/debug/xxx.exe启动——这绕过所有开发服务,自然没 HMR
Windows 下 cargo tauri dev 报错 0xc0000135
这不是编译失败,是运行时找不到 Windows C++ 运行时 DLL,典型症状是命令行一闪而过,或者弹窗报“无法启动此程序,因为计算机中丢失 VCRUNTIME140.dll”。
- 必须安装 Microsoft C++ Build Tools 或完整 Visual Studio(带 “使用 C++ 的桌面开发” 工作负载)
- 仅装 WebView2 不够;仅装 rustup 也不够;MSVC 和 Windows SDK 缺一不可
- 验证方式:在终端执行
cl /?,能输出帮助说明 MSVC 已就位;再运行rustc --version确认 Rust 能调用它
调试 Rust 后端时断点不命中
VSCode 默认不配置 Tauri 的调试入口,launch.json 里得手动指定生成路径和符号文件。
- 在项目根目录建
.vscode/launch.json,内容如下(Windows 示例):
{
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) Launch Tauri App",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/src-tauri/target/debug/${workspaceFolderBasename}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false
}
]
}
- 注意
program路径必须指向src-tauri/target/debug/xxx.exe,不是项目根下的target - 确保
src-tauri/Cargo.toml里没加panic = "abort",否则调试器无法捕获 panic
最容易被忽略的一点:Tauri 的 Rust crate 和前端是两个独立进程,调试时你要么断在 Rust 里(用上面配置),要么断在前端浏览器 DevTools 里——它们不会自动同步断点。想查前后端交互逻辑,得两边都设好断点,再看控制台日志对齐时间戳。


















