1

我正在尝试使用 Fable 将我编写的一些 f# 代码转换为 Web 项目,但是在编写文件输出时遇到了一些麻烦。以前,当我刚刚有一个 net core 项目时,我可以这样做:

File.WriteAllText("output.txt", "hello")

但是现在如果我尝试这样做,我会收到此错误:

error FABLE: Cannot resolve System.IO.File.WriteAllText @ ./src/App.fsproj

我需要导入/添加一些东西来完成这项工作吗?或者有没有不同的方式在 Fable 中写入文件?我真的很感激任何帮助或建议。先感谢您!

4

2 回答 2

2

好吧,你不能从 JavaScript 写入文件,因此你不能从 Fable 写入文件。一开始这一切可能看起来令人困惑,但也许一个好的经验法则是你不能直接在 Fable 中使用大多数命名空间的东西。System

然而,好消息是一堆东西是可用的(例如System.Console.WriteLine),并且更大的一堆东西以某种方式映射到 Fable 中的某些东西(例如System.MathSystem.Collections)。你可以在这里阅读更多。

于 2020-05-24T14:27:56.083 回答
1

Fable编译为在客户端执行的Javascript,例如在您的浏览器中(您没有文件访问权限)。

要在服务器端编写文件,例如使用GiraffeSuave或任何您喜欢的框架创建服务器端 API。在此 API 中实现文件写入。

open Giraffe.HttpHandlers
open Giraffe.Middleware

let webApp =
    choose [
        route "/api"   >=> File.WriteAllText("output.txt", "hello")
                           setStatusCode 200 
 ]

从Fable调用您的 API ,例如使用 post 调用。

   open Fable.Import.Fetch
   open Fable.Helpers.Fetch

    sync { 
        do! 
          postRecord(API, ...

    }
于 2020-05-24T13:54:38.307 回答