【Tauri】command my_custom_command1 not found

Uncategorized
239 words

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

command my_custom_command1 not found

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

1
command my_custom_command1 not found

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

フロントエンド(TypeScript)

1
2
3
4
5
6
7
8
9
10
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#![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

1
2
3
4
5
6
7
8
9
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

1
2
3
4
5
6
7
8
9
10
11
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");
}