Tauri v2 嵌入式资源文件访问报错UnknownPath(Mac M系列设备)
Tauri 2.0.0在M1/M2 Mac Sequoia下资源目录访问失败(UnknownPath)解决方案
针对开发环境正常、打包分发到M1/M2芯片Mac(Sequoia系统)后无法访问资源目录的问题,可按以下步骤排查解决:
1. 验证资源是否被正确打包
右键打包后的.app文件 → 选择「显示包内容」,进入Contents/Resources目录,确认assets/user.json是否存在:
- 如果文件不存在:说明资源未被正确打包,检查
tauri.conf.json的resources配置是否正确,确保"assets/**/*"被包含在resources数组中,同时确认打包命令使用的是cargo tauri build而非开发模式命令。 - 如果文件存在:继续排查路径解析和权限问题。
2. 修正代码中的语法错误
你的测试代码存在语法错误:
// 错误写法 let doc_alt=let resource_path = app.path().resolve("assets/user.json",BaseDirectory::Resource)
修正为:
// 正确写法 let doc_alt = app.path().resolve("assets/user.json", BaseDirectory::Resource);
3. 检查权限配置的有效性
确保tauri.conf.json中已指定能力配置文件路径:
"tauri": { "capabilities": ["capabilities/default.json"], // 其他配置... }
若未指定,打包后权限配置不会生效,导致资源目录访问被拦截。
4. 尝试绝对路径拼接方式访问资源
替换原有的路径解析逻辑,先获取资源目录绝对路径再拼接文件名,避免相对路径解析问题:
.setup(|app| { match app.path().resource_dir() { Ok(resource_dir) => { let user_json_path = resource_dir.join("assets/user.json"); println!("User JSON path: {:?}", user_json_path); // 执行文件读取操作 } Err(e) => eprintln!("Failed to get resource directory: {:?}", e), } Ok(()) })
5. 升级Tauri版本至最新补丁版
Tauri 2.0.0可能存在与Sequoia系统适配的已知问题,升级到2.x系列的最新补丁版本(如2.0.1及以上)修复平台特定的路径解析bug:
# 更新tauri-cli cargo install tauri-cli --version "^2.0" # 更新项目依赖 cd src-tauri cargo update tauri
6. 检查Mac沙盒配置(若启用)
如果tauri.conf.json中启用了Mac沙盒:
"macOS": { "sandbox": true, // 其他配置... }
可尝试在capabilities/default.json中补充更明确的路径规则:
{ "identifier": "fs:allow-read", "allow": [ // 原有配置... { "path": "$APP/Contents/Resources/**" } ] }
内容的提问来源于stack exchange,提问作者Clément Liscôt
相关产品推荐
相关产品推荐

