【Tauri】command my_custom_command1 not found

アプリ開発

Tauri を使ってアプリを作っていたところ、躓いたことをメモする。

スポンサーリンク

command my_custom_command1 not found

フロントエンドから Rust を呼び出すときに、次のエラーがでた。

command my_custom_command1 not found

そのときのソースは次の通り。

フロントエンド(TypeScript)

import { tauri } from '@tauri-apps/api';

try {
  tauri.invoke('my_custom_command1');
  tauri.invoke('my_custom_command2');
  tauri.invoke('my_custom_command3');
  tauri.invoke('my_custom_command4');
} catch (error) {
  console.log(error);
}

Rust

#![cfg_attr(
  all(not(debug_assertions), target_os = "windows"),
  windows_subsystem = "windows"
)]

#[tauri::command]
fn my_custom_command1() {
  println!("I was invoked from JS!");
}

#[tauri::command]
fn my_custom_command2() {
  println!("I was invoked from JS!");
}

#[tauri::command]
fn my_custom_command3() {
  println!("I was invoked from JS!");
}

#[tauri::command]
fn my_custom_command4() {
  println!("I was invoked from JS!");
}

fn main() {
  tauri::Builder::default()
    .invoke_handler(tauri::generate_handler![my_custom_command1])
    .invoke_handler(tauri::generate_handler![my_custom_command2])
    .invoke_handler(tauri::generate_handler![my_custom_command3])
    .invoke_handler(tauri::generate_handler![my_custom_command4])
    .run(tauri::generate_context!())
    .expect("error while running tauri application");
}

解決

複数のコマンドを設定するときは、リストで設定する必要がある。

NG

fn main() {
  tauri::Builder::default()
    .invoke_handler(tauri::generate_handler![my_custom_command1])
    .invoke_handler(tauri::generate_handler![my_custom_command2])
    .invoke_handler(tauri::generate_handler![my_custom_command3])
    .invoke_handler(tauri::generate_handler![my_custom_command4])
    .run(tauri::generate_context!())
    .expect("error while running tauri application");
}

OK

fn main() {
  tauri::Builder::default()
    .invoke_handler(tauri::generate_handler![
      my_custom_command1, 
      my_custom_command2, 
      my_custom_command3, 
      my_custom_command4
    ])
    .run(tauri::generate_context!())
    .expect("error while running tauri application");
}
タイトルとURLをコピーしました