tauri-apps/tauri

[bug] After upgrading to 2.0, config.get_hotkeys not allowed. Plugin not found appears

TheBlindM opened this issue · 4 comments

Describe the bug

image

--------------------config_plugin.rs------------------------
#[tauri::command]
async fn get_hotkeys(query_id: Option<String>) -> CmdResult<HashMap<String, Vec<String>>> {
    return Ok(wrap_err!(
        config_service::get_hotkeys_like_id(query_id).await
    )?);
}

pub fn init<R: Runtime>() -> TauriPlugin<R> {
    Builder::new("config")
        .invoke_handler(tauri::generate_handler![
            get_hotkeys
        ])
        .build()
}



----------------------main.rs-----------------

fn main() -> std::io::Result<()> {
    #[allow(unused_mut)]
    tauri::Builder::default()
        .plugin(tauri_plugin_updater::Builder::new().build())
        .plugin(tauri_plugin_clipboard_manager::init())
        .plugin(tauri_plugin_os::init())
        .plugin(tauri_plugin_process::init())
        .plugin(tauri_plugin_dialog::init())
        .plugin(tauri_plugin_fs::init())
        .plugin(tauri_plugin_shell::init())
        .setup(|app| {
            tauri::async_runtime::block_on(async move {
                // 获取应用数据目录
                handle::Handle::global().init(app.app_handle());
                let _ = dirs::init_portable_flag();
                let app_dir = dirs::app_home_dir().unwrap();
                if !app_dir.exists() {
                    let _ = fs::create_dir_all(&app_dir);
                }
                log_err!(init::init_log());

                let connection = Database::connect(format!(
                    "sqlite:{}\\local.db?mode=rwc",
                    app_dir.to_str().unwrap()
                ))
                    .await
                    .unwrap();

                // 设置 LIKE 为区分大小写
                let stmt =
                    Statement::from_string(DbBackend::Sqlite, "PRAGMA case_sensitive_like=ON");
                connection.query_one(stmt).await.unwrap(); // Where dbh is type DatabaseConnection
                Migrator::up(&connection, None).await.unwrap();
                CONTEXT.lock().await.db = connection;
                log_err!(config_service::init().await);
            });
            Ok(())
        })
        .plugin(tauri_plugin_single_instance::init(|app, _argv, _cwd| {
            //设置插件
            // let window = app.get_window("main").unwrap(); //二次打开软件时,显示已打开窗口,单例运行app
            // window.set_focus().unwrap();
            // window.show().unwrap();
            let windows = app.webview_windows();
            windows
                .values()
                .next()
                .expect("Sorry, no window found")
                .set_focus()
                .expect("Can't Bring Window to Focus");
        }))
         .plugin(group_plugin::init())
         .plugin(terminal_plugin::init())
         .plugin(local_terminal_plugin::init())
         .plugin(shortcut_cmd_plugin::init())
         .plugin(config_plugin::init())
         .plugin(system_plugin::init())
         .plugin(utils_plugin::init())
         .plugin(login_credentials_plugin::init())
         .plugin(server_plugin::init())
         .plugin(sftp_plugin::init())
         .plugin(env_var_plugin::init())
         .plugin(cmd_prompt_plugin::init())
         .plugin(history_cmd_plugin::init())
        .manage(ShellManager::default())
        .manage(SftpManager::default())

        .build(tauri::generate_context!())
        .expect("err building")
        .run(move |_handle, event| match event {
            tauri::RunEvent::Ready => {
                println!("程序;启动");
            }
            tauri::RunEvent::Exit => {
                println!("程序退出")
            }
            _ => (),
        });
    tauri::async_runtime::block_on(async move {
        let _ = CONTEXT.lock().await.db.clone().close();
    });
    Ok(())
}

------------------------------------js--------------------------------

export const getHotkeys = async (queryId: any) => {
  return invoke('plugin:config|get_hotkeys', { queryId });
};

Reproduction

No response

Expected behavior

No response

Full tauri info output

cargo tauri info

[✔] Environment
    - OS: Windows 10.0.19045 x86_64 (X64)
    ✔ WebView2: 129.0.2792.89
    ✔ MSVC: Visual Studio Community 2022
    ✔ rustc: 1.79.0 (129f3b996 2024-06-10)
    ✔ cargo: 1.79.0 (ffa9cf99a 2024-06-03)
    ✔ rustup: 1.27.1 (54dd3d00f 2024-04-24)
    ✔ Rust toolchain: 1.79.0-x86_64-pc-windows-msvc (environment override by RUSTUP_TOOLCHAIN)
    - node: 18.17.1
    - pnpm: 8.8.0
    - yarn: 1.22.19
    - npm: 9.6.7

[-] Packages
    - tauri 🦀: 2.0.6
    - tauri-build 🦀: 2.0.2
    - wry 🦀: 0.46.3
    - tao 🦀: 0.30.3
    - tauri-cli 🦀: 2.0.4

[-] Plugins
    - tauri-plugin-fs 🦀: 2.0.3
    - tauri-plugin-single-instance 🦀: 2.0.1
    - tauri-plugin-os 🦀: 2.0.1
    - tauri-plugin-dialog 🦀: 2.0.3
    - tauri-plugin-process 🦀: 2.0.1
    - tauri-plugin-shell 🦀: 2.0.2
    - tauri-plugin-updater 🦀: 2.0.2

[-] App
    - build-type: bundle
    - CSP: unset
    - frontendDist: ../dist
    - devUrl: http://localhost:3201/

Stack trace

Uncaught (in promise) config.get_hotkeys not allowed. Plugin not found

Additional context

No response

I think we forgot to update the documentation for inlined plugins, please see #10075 which kinda have the steps to include inlined plugins

I think we forgot to update the documentation for inlined plugins, please see #10075 which kinda have the steps to include inlined plugins

sorry, I didn't understand how he operated it

see this

.plugin(
"app-menu",
tauri_build::InlinedPlugin::new().commands(&["toggle", "popup"]),
)
example and add something similar for your plugin in your build.rs

I will update the documentation today

see this

.plugin(
"app-menu",
tauri_build::InlinedPlugin::new().commands(&["toggle", "popup"]),
)

example and add something similar for your plugin in your build.rs
I will update the documentation today

ok, I also saw a method. May I ask if this is feasible?
https://github.com/tauri-apps/tauri/blob/dev/examples/api/src-tauri/src/lib.rs
image