You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:10:14