Rust 创建React应用程序导入Wasm到Web Worker

Rust 创建React应用程序导入Wasm到Web Worker,rust,web-worker,webassembly,wasm-bindgen,rust-wasm,Rust,Web Worker,Webassembly,Wasm Bindgen,Rust Wasm,我正在使用wasm bindgen和react应用程序(使用create react app创建),我想将wasm模块导入web worker 我只是举个例子,开始的时候 为了在“主线程”上使用wasm,我设置了react应用程序rewired,下面是config-overrides.js: const path = require('path'); module.exports = function override(config, env) { const wasmExtensio

我正在使用wasm bindgen和react应用程序(使用create react app创建),我想将wasm模块导入web worker

我只是举个例子,开始的时候

为了在“主线程”上使用wasm,我设置了react应用程序rewired,下面是config-overrides.js:

const path = require('path');

module.exports = function override(config, env) {
    const wasmExtensionRegExp = /\.wasm$/;

    config.resolve.extensions.push('.wasm');

    config.module.rules.forEach(rule => {
        (rule.oneOf || []).forEach(oneOf => {
            if (oneOf.loader && oneOf.loader.indexOf('file-loader') >= 0) {
                // Make file-loader ignore WASM files
                oneOf.exclude.push(wasmExtensionRegExp);
            }
        });
    });

    // Add a dedicated loader for WASM
    config.module.rules.push({
        test: wasmExtensionRegExp,
        include: path.resolve(__dirname, 'src'),
        use: [{ loader: require.resolve('wasm-loader'), options: {} }]
    });

    return config;
};
在主线程上,我可以导入wasm并在本地npm链接(未发布任何npm模块)后像这样使用它:

我了解到您应该在主线程中编译wasm模块,然后将其发送到线程,因此我尝试了以下方法:

fetch("my_wasm_package").then(response =>
  response.arrayBuffer()
).then(bytes =>
  WebAssembly.compile(bytes)
).then(WasmModule =>
  myWorker.postMessage(WasmModule)
);
这给了我以下错误:

localhost/:1 Uncaught (in promise) CompileError: WebAssembly.compile(): expected magic word 00 61 73 6d, found 3c 21 44 4f @+0
Uncaught (in promise) DOMException: Failed to execute 'postMessage' on 'Worker': function greet() {
  _satellite_rust_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["greet"]();
} could not be cloned.
    at
我还尝试了使用普通导入命令:

const wasm = import('my_wasm_package')

wasm.then(w => {

   myWorker.postMessage(w)

})

我得到以下错误:

localhost/:1 Uncaught (in promise) CompileError: WebAssembly.compile(): expected magic word 00 61 73 6d, found 3c 21 44 4f @+0
Uncaught (in promise) DOMException: Failed to execute 'postMessage' on 'Worker': function greet() {
  _satellite_rust_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["greet"]();
} could not be cloned.
    at
有什么我可以添加到webpack.config使其工作吗?正确的设置是什么