寓言/编译错误:未定义toJson

问题描述 投票:0回答:1

根据本教程,我正在尝试对寓言进行POST请求:https://fable.io/fable-powerpack/posts/fetch.html

我遇到此编译错误:

error FSHARP: The value or constructor 'toJson' is not defined. Maybe you want one of the following:
       JSON (code 39)
     @ ./UI/UI.fsproj 1:0-24 1:0-24

这是我的代码:

let submitForm = 
    let txtName = getInputElementById("txtName")
    let postData = { Name = txtName.value }

    let requestProps =
        [ RequestProperties.Method HttpMethod.POST
        ; requestHeaders [ContentType "application/json"]
        ; RequestProperties.Body (unbox (toJson postData))
        ]
        //Encode.Auto.toString(1, postData)
        //toJson    
        //Fable.Core.JS.JSON.stringify

    promise {
        let! response = fetch "http://localhost:5000/employee/create" requestProps
        let responseText = response.text()
        Browser.console.log responseText
    } |> ignore

我也在Fable / .fable / Thoth.Json.2.0.0 / Encode.fs中得到这些编译错误:

The value, constructor, namespace or type 'Array' is not defined. (code 39)
The value, constructor, namespace or type 'JSON' is not defined. 

我猜这是因为寓言引用的是Thoth 2.0.0,而不是最新版本。如何解决此错误?

https://github.com/jaydpather/FunctionalCrudForms/blob/master/Fable/UI/UI.fs

post fetch fable
1个回答
0
投票

免责声明,我是Thoth.Json的维护者。

好像您正在使用2岁以上的寓言版本。

fable-powerpack已被弃用,并已分为不同的软件包。但似乎我们忘了更新此网站。

对于Fetch API,现在位于包Fable.Fetch中。

toJson不再存在,建议使用Thoth.JsonFable.SimpleJson

[还有Thoth.Fetch包已经将Fetch和Thoth.Json粘合在一起,因此您不必编写(反)序列化部分。

在您的情况下,它会给出类似的内容:

let createBook () : JS.Promise<unit> =
    promise {
        let url = "http://localhost:5000/employee/create"
        let txtName = getInputElementById("txtName")
        let data =
            {| Name = = txtName .Value |} // Using an anonymous for simplicity

        return! Fetch.post(url, data, caseStrategy = CamelCase)
    }
© www.soinside.com 2019 - 2024. All rights reserved.