Tauri V2中如何在获取app实例前获取资源路径?
在Tauri V2中提前获取资源路径的解决方案
你不需要提前获取AppHandle,Tauri的Context对象(通过tauri::generate_context!()生成)本身就具备路径解析能力,可以直接用它来获取资源目录路径,具体实现步骤如下:
- 提前生成
Context实例,用它解析资源路径 - 加载数据库迁移文件
- 初始化
tauri::Builder时,在run方法中传入提前生成的Context
修改后的完整代码如下:
#[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { // 提前生成context,用于解析资源路径 let context = tauri::generate_context!(); // 通过context获取资源路径 let resource_path = context.path().resolve("migration", tauri::path::BaseDirectory::Resource) .expect("Failed to resolve resource path"); let migrations = load_migrations(resource_path); tauri::Builder::default() .setup(|app| { #[cfg(debug_assertions)] { let window = app.get_webview_window("main").unwrap(); window.open_devtools(); } Ok(()) }) .plugin(tauri_plugin_fs::init()) .plugin(tauri_plugin_dialog::init()) .plugin(tauri_plugin_clipboard_manager::init()) .plugin( tauri_plugin_sql::Builder::default() .add_migrations("sqlite:test.db", migrations) .build(), ) .plugin(tauri_plugin_opener::init()) .invoke_handler(tauri::generate_handler![create_pdf]) // 传入提前生成的context,而不是再次调用generate_context!() .run(context) .expect("error while running tauri application"); }
关键点说明
tauri::generate_context!()会读取你的tauri.conf.json配置生成上下文,包含应用的路径信息、窗口配置等核心数据- 确保你的
tauri.conf.json中正确配置了资源目录,比如将migration文件夹添加到tauri > bundle > resources数组中,这样打包时才会将迁移文件包含进去:{ "tauri": { "bundle": { "resources": ["migration/**/*"] } } }
内容的提问来源于stack exchange,提问作者Ben Quan
相关产品推荐
相关产品推荐

