要約
Windows で、Tauri の動作環境はmsvc版のRust toolchainでなければなりません。GNU版だと動作しません。
エラー環境
Windows 11 (v10.0.22621)
Tauriプロジェクトのpackage.json
{
...
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview",
"tauri": "tauri"
},
"dependencies": {
"@tauri-apps/api": "^1.5.3",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"@tauri-apps/cli": "^1.5.9",
"@types/node": "^18.7.10",
"@types/react": "^18.0.15",
"@types/react-dom": "^18.0.6",
"@vitejs/plugin-react": "^3.0.0",
"typescript": "^4.9.5",
"vite": "^4.2.1"
}
}
$ winget list | find "Rust"
Rust 1.75 (GNU 64-bit) Rustlang.Rust.GNU 1.75.0.0 winget
$ npm --version
10.2.5
$ yarn --version
1.22.19
問題発生
Tauri はRust+JavaScriptで、デスクトップアプリケーションを作るためのプラットフォームです。Rust toolchainとしてstable-x86_64-pc-windows-gnu
を使用すると、yarn tauri dev
にてエラーが起きます。
エラー内容
$ yarn tauri dev
<省略>
Copy from "...\\webview2-com-sys-0.19.0\\x86\\WebView2LoaderStatic.lib" -> "...\\out\\x86\\WebView2LoaderStatic.lib"
Error: Io(Error { kind: NotFound, message: "program not found" })
warning: build failed, waiting for other jobs to finish...
<省略>
解決
msvc版のtoolchainを使いましょう。直接入れる方法もありますが、rustup
を入れてしまうのが楽です。(デフォルトでmsvc版を使うことができるようです)
$ winget remove Rustlang.Rust.GNU
見つかりました Rust (GNU) [Rustlang.Rust.GNU]
パッケージのアンインストールを開始しています...
正常にアンインストールされました
$ winget install Rustlang.Rustup
見つかりました Rustup: the Rust toolchain installer [Rustlang.Rustup] バージョン 1.26.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://static.rust-lang.org/rustup/archive/1.26.0/x86_64-pc-windows-msvc/rustup-init.exe
██████████████████████████████ 8.19 MB / 8.19 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
$ rustup --version
rustup 1.26.0 (5af9b9484 2023-04-05)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.75.0 (82e1608df 2023-12-21)`
$ rustup toolchain list
stable-x86_64-pc-windows-msvc (default)
原因 (推測)
Tauri内部で使用しているWebView2が、MSVC バイナリ(.dll)として提供されることに起因するものであると推測されます。(すみません、詳しく調べていません)
余談
rustup
上の GNU版を用いるとまた違うエラーが出ます。
エラー内容
$ rustup --version
rustup 1.26.0 (5af9b9484 2023-04-05)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.75.0 (82e1608df 2023-12-21)`
$ rustup toolchain list
stable-x86_64-pc-windows-gnu (default)
stable-x86_64-pc-windows-msvc
$ yarn tauri dev
...
Caused by:
process didn't exit successfully: `...\build-script-build` (exit code: 101)
--- stdout
cargo:rerun-if-env-changed=TAURI_CONFIG
cargo:rerun-if-changed=tauri.conf.json
cargo:rustc-cfg=desktop
cargo:rustc-cfg=dev
package.metadata does not exist
--- stderr
thread 'main' panicked at ...\src\windows_not_msvc.rs:49:23:
Couldn't to execute windres to compile "...\out\resource.rc" into "...\out/libresource.a": program not found
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
...