标签: webassembly

类型错误:WebAssembly 实例化:导入参数必须存在并且必须是一个对象

我正在关注这个“hello world”教程: https://steemit.com/eos/@skenan/eos-development-for-beginners-web assembly

我收到此错误:

类型错误:WebAssembly 实例化:导入参数必须存在并且必须是一个对象

知道可能是什么原因造成的吗?

webassembly

11
推荐指数
2
解决办法
1万
查看次数

是否可以使用WebAssembly提交HTTP请求?

我正在尝试在WebAssembly中提交一个简单的HTTP GET请求.为此,我编写了这个程序(从Emscripten网站复制,稍作修改):

#include <stdio.h>
#include <string.h>
#ifdef __EMSCRIPTEN__
#include <emscripten/fetch.h>
#include <emscripten.h>
#endif


void downloadSucceeded(emscripten_fetch_t *fetch) {
  printf("Finished downloading %llu bytes from URL %s.\n", fetch->numBytes, fetch->url);
  // The data is now available at fetch->data[0] through fetch->data[fetch->numBytes-1];
  emscripten_fetch_close(fetch); // Free data associated with the fetch.
}

void downloadFailed(emscripten_fetch_t *fetch) {
  printf("Downloading %s failed, HTTP failure status code: %d.\n", fetch->url, fetch->status);
  emscripten_fetch_close(fetch); // Also free data on failure.
}

unsigned int EMSCRIPTEN_KEEPALIVE GetRequest() {
  emscripten_fetch_attr_t attr;
  emscripten_fetch_attr_init(&attr);
  strcpy(attr.requestMethod, "GET");
  attr.attributes …
Run Code Online (Sandbox Code Playgroud)

c http xmlhttprequest emscripten webassembly

11
推荐指数
2
解决办法
3272
查看次数

如何使用Blazor生成并保存文件客户端?

我希望有一个SPA,它可以完成客户端的所有工作,甚至可以生成一些图形/视觉效果.

我希望能够让用户单击按钮并保存页面中的视觉效果,表格和其他内容(既可以看到也可以看不到,因此右键单击保存或复制/粘贴并不总是一个选项).

如何从webassembly/blazor库调用函数,获取结果并将其保存为客户端文件?

这个想法是这样的......?

CSHTML

<input type="file" onchange="@ReadFile">

<input type="file" onchange="@SaveFile">

@functions{
object blazorObject = new blazorLibrary.SomeObject();

void ReadFile(){
    blazorObject.someFunction(...selectedFile?...);

}
void SaveFile(){
    saveFile(...selectedFile..?)
}

}
Run Code Online (Sandbox Code Playgroud)

c# web webassembly blazor

11
推荐指数
4
解决办法
2981
查看次数

如何将一组对象传递给WebAssembly并将其转换为带有wasm-bindgen的结构向量?

可以像这样传递一个整数数组:

const js = import("./webassembly_rust");
let array_nums = [1,2,3,4,5,6,7,8,9];

js.then(js => {
  js.test( array_nums );
}); 
Run Code Online (Sandbox Code Playgroud)

到WebAssembly并将其保存在这样的向量中:

extern crate serde_json;
extern crate wasm_bindgen;

use wasm_bindgen::prelude::*;

#[macro_use]
extern crate serde_derive;

#[wasm_bindgen]
pub fn test(array: JsValue) {
    let elements: Vec<u32> = array.into_serde().unwrap();
}
Run Code Online (Sandbox Code Playgroud)

也可以像这样传递一个对象:

const js = import("./webassembly_rust");
let jsObject = {name: "hello world", id: "99", parent_id: "11"};

js.then(js => {
  js.test( jsObject );
}); 
Run Code Online (Sandbox Code Playgroud)

到WebAssembly并将其保存为这样的Element结构:

extern crate serde_json;
extern crate wasm_bindgen;

use wasm_bindgen::prelude::*;

#[macro_use]
extern crate serde_derive;

#[derive(Serialize, Deserialize)] …
Run Code Online (Sandbox Code Playgroud)

rust webassembly serde wasm-bindgen

11
推荐指数
1
解决办法
1709
查看次数

为什么我在将 Wasm 捆绑在一起后收到错误“响应具有不受支持的 MIME 类型”,但在使用 webpack 开发服务器时却没有?

我正在尝试制作一个 Rust WebAssembly 项目并修改了rust-webpack-template作为我的起点。该模板是一个带有 JavaScript 文件的 webpack 项目,该文件调用单个 Wasm 函数,Rust Wasm 从那里接管。

我修改了模板,因为我想在 JavaScript 中使用我的主要逻辑并通过 API 调用 Rust Wasm。

我已将 webpack 条目更改为bootstrap.js如下所示。

// bootstrap.js
import("./index.js").catch(e => 
    console.error("Error importing 'index.js':", e)
);
Run Code Online (Sandbox Code Playgroud)

我添加了文件index.js,它调用了 Rust Wasm 函数

// index.js
import * as wasm from "../crate/pkg/rust_webpack";

const title = document.getElementById("msg");

title.innerText = wasm.get_msg();
Run Code Online (Sandbox Code Playgroud)

get_msgRust的函数如下所示:

#[wasm_bindgen]
pub fn get_msg() -> String {
    "Hello from Rust WebAssembly!".to_owned()
}
Run Code Online (Sandbox Code Playgroud)

当我使用 运行项目时webpack-dev-server -d,一切正常。

但是,当我使用构建项目webpack并尝试直接托管生成的文件时,没有显示任何内容并且浏览器控制台显示错误:

导入“index.js”时出错:TypeError:“响应具有不受支持的 MIME …

javascript rust webpack webassembly

11
推荐指数
1
解决办法
3044
查看次数

在Apache箭头浏览器顶部的SQL?

我有存储在客户端浏览器内存中的数据。例如,假设数据集如下:

"name" (string),     "age" (int32),   "isAdult" (bool)
"Tom"          ,     29               1
"Tom"          ,     14               0
"Dina"         ,     20               1
Run Code Online (Sandbox Code Playgroud)

我想在javascript中对此数据运行非平凡的SQL语句,例如:

SELECT name, GROUP_CONCAT(age ORDER BY age) ages
FROM arrowData a1 JOIN arrowData a2 USING (name)
WHERE a1.isAdult != a2.isAdult
Run Code Online (Sandbox Code Playgroud)

我会得到:

"name" (string),      "ages" (string)
"Tom"                 "14,29"
Run Code Online (Sandbox Code Playgroud)

我在javascript中拥有的数据存储为apache Arrow(也与Perspective结合使用),并且我也想对该apache Arrow数据执行SQL。作为最后的选择,我认为可以在wasm中使用sqllite,但是我希望可以有一种更简单的方法来直接查询Arrow数据,而不必将所有数据移到sqllite存储中来对它执行查询。

有什么方法可以做到这一点?

javascript webassembly apache-arrow dremio

11
推荐指数
1
解决办法
411
查看次数

如何将对象绑定到 Blazor 中的 &lt;select&gt; 选项?

我有以下下拉菜单:

public class object {
    public other_object apple {get; set;}
    ...
    public string stuff {get; set;}
    ...
}

public class other_object {
    public string id {get; set;}
    public string name {get; set;}
}

<select class="custom-select" @bind="@object.apple">
     <option value="@object.apple">@object.apple.name</option>
     ...
</select>
Run Code Online (Sandbox Code Playgroud)

我想将选择绑定到一个对象,但只想显示该对象的某些属性。这会给我错误:

System.InvalidOperationException: 类型“other_object”没有支持从字符串转换的关联 TypeConverter。将“TypeConverterAttribute”应用于类型以注册转换器。

这是可能的吗?我不太确定类型转换器是如何工作的。

html c# webassembly blazor

11
推荐指数
1
解决办法
6097
查看次数

如何将闭包转换为 js_sys::Function?

如何将本地闭包转换为js_sys::Function

我想做这样的事情:

let canvas = document.get_element_by_id("canvas").unwrap();
let e: web_sys::HtmlElement = canvas.dyn_into().unwrap();
let f = || {};
e.set_onresize(Some(&f.into()));
Run Code Online (Sandbox Code Playgroud)

rust webassembly wasm-bindgen

11
推荐指数
1
解决办法
2444
查看次数

为什么在浏览器 &gt; 开发工具 &gt; 网络中的 Blazor WebAssembly 应用程序上看不到 DLL 和 dotnet.wasm?

我正在摆弄默认的 VS2019 (16.6.5) Blazor WebAssembly 项目。但是,当我查看Chrome(或 Firefox 或 Edge)> Developer Tools [F12] > network并启用Disable Cache 时,我没有看到加载太多内容?

Blazor wasm

Dev Tool > Sources 中,我可以看到dotnet.wasm已以某种方式加载。

来源中的 dotnet.wasm

通过阅读一些像这样的文章,我看到了显示 DLL 和 wasm 正在加载的屏幕截图。

Blazor wasm 上的 Devb 工具网络

为什么我看不到?


编辑:好的,只有在从 VS2019 开始调试 Blazor WebAssembly 项目时,我才成功地看到 DLL 像我想要的那样加载。当我在没有调试的情况下启动项目时,我仍然获得与第一个屏幕截图相同的轻量级负载。为什么?

.net webassembly blazor

11
推荐指数
1
解决办法
1131
查看次数

生成返回字符串的函数时,为什么 wasm-opt 在 wasm-pack 构建中失败?

我正在为康威的生命游戏学习 Rust WASM 教程

调用文件中最简单的函数之一Universe.render(它用于渲染表示游戏状态的字符串)。当我运行时它会导致错误wasm-pack build

Fatal: error in validating input
Error: failed to execute `wasm-opt`: exited with exit code: 1
  full command: "/home/vaer/.cache/.wasm-pack/wasm-opt-4d7a65327e9363b7/wasm-opt" "/home/vaer/src/learn-rust/wasm-game-of-life/pkg/wasm_game_of_life_bg.wasm" "-o" "/home/vaer/src/learn-rust/wasm-game-of-life/pkg/wasm_game_of_life_bg.wasm-opt.wasm" "-O"
To disable `wasm-opt`, add `wasm-opt = false` to your package metadata in your `Cargo.toml`.
Run Code Online (Sandbox Code Playgroud)

如果我删除该函数,则代码构建时不会出错。如果我用以下函数替换它,构建将失败并出现相同的错误:

pub fn wtf() -> String {
    String::from("wtf")
}
Run Code Online (Sandbox Code Playgroud)

似乎任何返回 a 的函数都会String导致此错误。为什么?

以下是我的全部代码:

mod utils;

use wasm_bindgen::prelude::*;

// When the `wee_alloc` feature is enabled, use `wee_alloc` as the global
// …
Run Code Online (Sandbox Code Playgroud)

rust webassembly wasm-bindgen wasm-pack rust-wasm

11
推荐指数
1
解决办法
1252
查看次数