当 运行 wasm-pack 时,导入 mysql 会出现很多错误
Importing mysql gives many errors when running wasm-pack
我对 Rust 和 Web Assembly 很陌生,有一个简单的示例站点。到目前为止,这只是非常简单的事情,而且一切正常。接下来我想看看如何连接到 MySQL.
对Cargo.toml,我补充说:
[dependencies]
wasm-bindgen = "0.2.50"
mysql = "*"
没有 mysql 部分,一切都可以正常编译。添加 mysql="*"
后,我收到许多 (317) 个错误。
一些错误示例:
[INFO]: Checking for the Wasm target...
[INFO]: Compiling to Wasm...
Compiling net2 v0.2.33
Compiling libc v0.2.62
error[E0432]: unresolved import `sys`
--> /home/rich/.cargo/registry/src/github.com-1ecc6299db9ec823/net2-0.2.33/src
/tcp.rs:18:5
|
18 | use sys::c;
| ^^^ maybe a missing `extern crate sys;`?
和
error[E0425]: cannot find value `timeout2ms` in this scope
--> /home/rich/.cargo/registry/src/github.com-1ecc6299db9ec823/net2-0.2.33/src/ext.rs:1145:18
|
1145 | .map(timeout2ms)
| ^^^^^^^^^^ not found in this scope
error[E0425]: cannot find value `SOL_SOCKET` in this scope
--> /home/rich/.cargo/registry/src/github.com-1ecc6299db9ec823/net2-0.2.33/src/ext.rs:1149:33
|
1149 | set_opt(self.as_sock(), SOL_SOCKET, SO_SNDTIMEO,
| ^^^^^^^^^^ not found in this scope
error[E0425]: cannot find value `SO_SNDTIMEO` in this scope
--> /home/rich/.cargo/registry/src/github.com-1ecc6299db9ec823/net2-0.2.33/src/ext.rs:1149:45
|
1149 | set_opt(self.as_sock(), SOL_SOCKET, SO_SNDTIMEO,
| ^^^^^^^^^^^ not found in this scope
到目前为止,我还没有添加任何代码来实际连接到数据库。我只是想构建项目。 仅 区别在于添加了 mysql 依赖项。
我在使用 MySQL 时使用此站点信息:mysql - Rust
鉴于我是 Rust 的新手,我不确定可能需要哪些其他信息来提供帮助。
编辑:我一直在谷歌上搜索其中的许多错误,但没有成功。
这是一个很大的不同;通过这样做,您将添加,从最高层到最低层:
- 要处理的库 mysql
- 处理各种压缩机制的库MySQL可以使用
- 处理 TLS 的库
- 处理套接字的库(你的错误来自哪里)
如果已知整个链都可以与 wasm
一起使用,那就没问题了。问题是,事实并非如此;从该库的 Cargo.toml 文件可以看出,它以 "knows" windows、macOS 或 linux 作为目标。在你的例子中,wasm
不是这三个中的任何一个,因此它尝试 net2
进行网络连接,这取决于 libc
,这需要所有那些突然丢失的符号。
如果你决定推进它,你将会掉进一个非常非常深的兔子洞。如果你这样做,请在评论中提及,我会给你指点。但是,在您这样做之前,请考虑以下事项:如果这是针对 wasm
工作人员的,任何拥有代码的人都将能够知道三元组(原型、主机、端口)以访问您的 MySQL 服务器将与凭据一起使用。这也可能会引发严重的基础架构问题,因为您不一定知道什么是受信任的客户端,什么不是。
(我不会骗你,这也将是一项 很多 的工作,而且大部分都不容易。例如,我会'走下那个洞)
我对 Rust 和 Web Assembly 很陌生,有一个简单的示例站点。到目前为止,这只是非常简单的事情,而且一切正常。接下来我想看看如何连接到 MySQL.
对Cargo.toml,我补充说:
[dependencies]
wasm-bindgen = "0.2.50"
mysql = "*"
没有 mysql 部分,一切都可以正常编译。添加 mysql="*"
后,我收到许多 (317) 个错误。
一些错误示例:
[INFO]: Checking for the Wasm target...
[INFO]: Compiling to Wasm...
Compiling net2 v0.2.33
Compiling libc v0.2.62
error[E0432]: unresolved import `sys`
--> /home/rich/.cargo/registry/src/github.com-1ecc6299db9ec823/net2-0.2.33/src
/tcp.rs:18:5
|
18 | use sys::c;
| ^^^ maybe a missing `extern crate sys;`?
和
error[E0425]: cannot find value `timeout2ms` in this scope
--> /home/rich/.cargo/registry/src/github.com-1ecc6299db9ec823/net2-0.2.33/src/ext.rs:1145:18
|
1145 | .map(timeout2ms)
| ^^^^^^^^^^ not found in this scope
error[E0425]: cannot find value `SOL_SOCKET` in this scope
--> /home/rich/.cargo/registry/src/github.com-1ecc6299db9ec823/net2-0.2.33/src/ext.rs:1149:33
|
1149 | set_opt(self.as_sock(), SOL_SOCKET, SO_SNDTIMEO,
| ^^^^^^^^^^ not found in this scope
error[E0425]: cannot find value `SO_SNDTIMEO` in this scope
--> /home/rich/.cargo/registry/src/github.com-1ecc6299db9ec823/net2-0.2.33/src/ext.rs:1149:45
|
1149 | set_opt(self.as_sock(), SOL_SOCKET, SO_SNDTIMEO,
| ^^^^^^^^^^^ not found in this scope
到目前为止,我还没有添加任何代码来实际连接到数据库。我只是想构建项目。 仅 区别在于添加了 mysql 依赖项。
我在使用 MySQL 时使用此站点信息:mysql - Rust
鉴于我是 Rust 的新手,我不确定可能需要哪些其他信息来提供帮助。
编辑:我一直在谷歌上搜索其中的许多错误,但没有成功。
这是一个很大的不同;通过这样做,您将添加,从最高层到最低层:
- 要处理的库 mysql
- 处理各种压缩机制的库MySQL可以使用
- 处理 TLS 的库
- 处理套接字的库(你的错误来自哪里)
如果已知整个链都可以与 wasm
一起使用,那就没问题了。问题是,事实并非如此;从该库的 Cargo.toml 文件可以看出,它以 "knows" windows、macOS 或 linux 作为目标。在你的例子中,wasm
不是这三个中的任何一个,因此它尝试 net2
进行网络连接,这取决于 libc
,这需要所有那些突然丢失的符号。
如果你决定推进它,你将会掉进一个非常非常深的兔子洞。如果你这样做,请在评论中提及,我会给你指点。但是,在您这样做之前,请考虑以下事项:如果这是针对 wasm
工作人员的,任何拥有代码的人都将能够知道三元组(原型、主机、端口)以访问您的 MySQL 服务器将与凭据一起使用。这也可能会引发严重的基础架构问题,因为您不一定知道什么是受信任的客户端,什么不是。
(我不会骗你,这也将是一项 很多 的工作,而且大部分都不容易。例如,我会'走下那个洞)