我使用create-react-app
和库与wasm
其所谓的sax-wasm.稍微修改示例代码为网络我得到了这个:
import { SaxEventType, SAXParser } from 'sax-wasm';
async function loadAndPrepareWasm() {
const saxWasmResponse = await import('sax-wasm/lib/sax-wasm.wasm');
const saxWasmbuffer = await saxWasmResponse.arrayBuffer();
const parser = new SAXParser(SaxEventType.Attribute | SaxEventType.OpenTag, {
highWaterMark: 64 * 1024,
});
const ready = await parser.prepareWasm(new Uint8Array(saxWasmbuffer));
if (ready) {
return parser;
}
}
loadAndPrepareWasm().then(console.log);
字符串
当我运行yarn start
命令时,我的构建失败:
Failed to compile.
./node_modules/sax-wasm/lib/sax-wasm.wasm
Module parse failed: magic header not detected
File was processed with these loaders:
* ./node_modules/file-loader/dist/cjs.js
You may need an additional loader to handle the result of these loaders.
Error: magic header not detected
型
2条答案
按热度按时间kyvafyod1#
以下解决方案适用于CRA 3.x。对于CRA 4.x,您应该使用craco。
CRA不支持WASM。但你可以解决它。你需要覆盖webpack config。有多个软件包可以做到这一点。我使用react-app-rewired。你需要wasm-loader软件包
然后添加您的override * js-overrides.js*:
字符串
在 package.json 中,我是这样做的:
型
vcirk6k62#
你最终想在浏览器中使用wasm,这意味着你必须在浏览器中访问它。
我安装了esbuild-wasm。有两种方法可以设置它:
1-在节点模块中找到模块“node_modules/esbuild-wasm”,你会看到一个文件“esbuild-wasm”,并将其放置在公共文件夹中。这有编译后的代码可以直接在浏览器内工作。内部组件:
字符串
第二种方式:
型
你就这样用它
型