#windows #rust #webassembly #yew
#Windows #Ржавчина #webassembly #yew
Вопрос:
Создание приложения Yew в Windows
Я создаю приложение yew вместе с серверной частью rocket в Windows, следуя этому руководству (хотя руководство предназначено для среды Linux). Я пытаюсь создать приложение yew с помощью wasm-pack
. Я не использую подсистему Linux для создания приложения, хотя оно у меня установлено.
Код / Конфигурация
Я уже установил набор инструментов wasm и cargo make:
rustup target add wasm32-unknown-unknown
Ниже приведен мой список инструментов:
stable-x86_64-pc-windows-gnu
stable-x86_64-pc-windows-msvc
nightly-x86_64-pc-windows-msvc (default)
1.30.0-x86_64-pc-windows-msvc
Вот моя структура папок:
Project root
├───backend <-- rocket backend
| ├───Cargo.toml
│ └───src
│ ├───bin
│ └───db
├───frontend <-- yew frontend
│ ├───pkg
│ ├───src
| ├───Cargo.toml
| └───Makefile.toml
├───src
├───Cargo.toml
└───Makefile.toml
Это rootdirCargo.toml
:
[package]
name = "sentinel"
version = "0.1.0"
authors = ["zachdelano <email>"]
edition = "2018"
[workspace]
members = ["backend", "frontend"]
Это rootdirMakefile.toml
:
[env]
CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = "true"
[tasks.default]
clear = true
dependencies = ["build"]
Это rootdirfrontendCargo.toml
:
[dependencies]
sentinel = { path = ".." }
yew = "0.17.3"
wasm-pack = "0.9.1"
wasm-bindgen = "0.2.68"
web-sys = "0.3.45"
[lib]
crate-type = ["cdylib", "rlib"]
Это rootdirfrontendMakefile.toml
:
[tasks.default]
dependencies = ["create_wasm"]
[tasks.create_wasm]
command = "wasm-pack"
args = ["build", "--target", "web", "--out-name", "package", "--dev"]
dependencies = ["build"]
Ожидаемый результат
Я ожидаю, что приложение завершит сборку без ошибок при запуске cargo make
. Похоже, что в руководстве по Yew указано, что больше ничего не требуется.
Фактический вывод
Я получаю множество ошибок при запуске cargo make
(из корневого каталога), например:
error[E0433]: failed to resolve: could not find `unix` in `os`
--> C:UsersZach.cargoregistrysrcgithub.com-1ecc6299db9ec823dirs-1.0.5srclin.rs:41:18
|
41 | use std::os::unix::ffi::OsStringExt;
| ^^^^ could not find `unix` in `os`
Посмотрите весь список ошибок.
Это что-то вроде цепочки инструментов? Как я могу это исправить?
Выполняется rustup update
В результате выполнения я получаю следующий вывод rustup update
.
Теперь, когда я запускаю cargo make
из корневого каталога, я получаю разные ошибки:
error[E0432]: unresolved import `crate::sys`
--> C:UsersZach.cargoregistrysrcgithub.com-1ecc6299db9ec823socket2-0.3.15srcsocket.rs:23:5
|
23 | use crate::sys;
| ^^^^^^^^^^ no `sys` in the root
Смотрите полный список ошибок.
В репозитории изменен некоторый код.
Ответ №1:
Проблема заключалась в том, что я пытался установить wasm-pack
и web-sys
. Я не знаю, почему это было проблемой, но когда я прокомментировал их и запустил cargo make
, все было построено просто отлично. Я также удалил target
и повторно cargo make
запустил, чтобы убедиться.
[package]
name = "frontend"
version = "0.1.0"
authors = ["zachdelano <email>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
sentinel = { path = ".." }
yew = "0.17.3"
wasm-bindgen = "0.2.68"
# wasm-pack = "0.9.1"
# web-sys = "0.3.45"
[lib]
crate-type = ["cdylib", "rlib"]