如何在ES6中导入和使用Emscripten FS ?



我想知道如何使用FS导出模块+file_packager的数据文件?

我们正在使用Emscripten生成ES6导出,包含以下内容:

emcc -Wl,-rpath,./wasm -Wl,-rpath,./wasm --rtlib=compiler-rt -Wl,-rpath,./wasm -Wl,-rpath,./wasm --rtlib=compiler-rt --no-entry -sALLOW_MEMORY_GROWTH=1 -sFORCE_FILESYSTEM=1 -sEXPORT_ALL=1 -sLINKABLE=1 -sMODULARIZE=1 -sEXPORT_ES6=1 -sEXPORT_NAME=libfrutil

这个库正在工作,我们可以在ES6中导入整个WASM绑定。现在的问题是如何让下面一行生成的FS库工作:

file_packager fs.data --js-output=fs.js --export-name=libfreerad --preload ~/Documents/Repositories/projects/fr-server/share/dictionary@/share/dictionary

一旦这些可用我们就可以做:

import libfrutil from "../util/libfrutil-util";
const wasm = await libfreeradiusUtil(0);
const error = wasm.cwrap("fr_strerror", "string", []);

所以我不知道该怎么处理fs。数据和fs.js脚本。显然。data文件需要可用,所以它可以被获取,但fs.js是令人困惑的。我把它当作一个类似libfrutil的模块吗?

没有任何关于如何在ES6中实际使用FS的例子,所以它非常令人困惑。

我认为最简单的解决方案(也是最有效的)是使用--embed-fileemcc链接器标志。这将文件数据嵌入到wasm二进制文件本身中(在内部它调用file-packager,但您不需要自己运行file-packager)。

这是否适用于您的用例?

最新更新