现阶段如何使用MoonBit读写本地csv文件?

目前还没有在 try.moonbitlang.cn 上看到涉及本地I/O的示例,现阶段也没有相应的文档可参考。
平时很少用到node.js,如果必须借助FFI才能实现,感觉又没头绪了。
希望能有更详细的关于I/O和FFI的参考,以及FFI这块如果能有js以外的示例(如python/go)会更方便一些。
谢谢:pray:

目前必须依赖FFI。

每一个编译后端都有特殊的输入输出方式,其中Wasm的话依赖WASI标准。这个的支持还不是很完善,目前可以参考 GitHub - peter-jerry-ye/wasi: WASI Preview 1 implementation for moonbit 利用这个moonbit库构建项目,并利用里面的示例的deno配置+js脚本进行构建。

2 个赞

如果想使用JS后端的话,需要用内联JS,例如

type PromiseString // 外部类型,指代Promise<String>

pub extern "js" fn fsRead(path: String) -> PromiseString =
#|async (path) => {
#|  const fs = await import("node:fs");
#|  return fs.readFile(path, { encoding: "utf8" });
#|}
5 个赞

直接读文件的例子还有么, wasmgc 后端

可以考虑使用 moonbitlang/x/fs 这个包,不过目前这个API是不稳定的

1 个赞

mooncakes网页显示的x版本是0.4.7,但是直接moon add 得到的版本是0.2.0,0.2.0版本并不包含fs,手动改成0.4.7则提示没有符合的版本,请看一下是什么问题。

这可能是本地的索引没有更新,可以执行一下moon update

1 个赞

谢谢,确实是这样。