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");
}