使用ReasonML FFI

我正在尝试了解ReasonmL的FFI(即external)用法。为此,我整理了以下代码(请参见Try ReasonMLSketch.sh

type dom;
type element;
[@bs.val] 
external dom: dom = "document";
[@bs.send.pipe : dom]
external get_by_id: string => element = "getElementById";
let tag = document |> get_by_id("main");

但是,代码当前因以下错误而失败:

尝试ReasonmL错误

  

我们为您找到了一个错误! OCaml预览6:11-18

     

找不到有价文件

Sketch.sh错误

  

错误:外部标识符必须是函数

感谢您在回答以下问题方面的帮助:

  1. 上面的代码有什么问题?
  2. 我相信可以通过多种方式配置上述FFI,例如使用[@bs.scope]-这些方式有什么含义(如果有)? -See follow-up question.
wushuangbaoying 回答:使用ReasonML FFI

这里有几个不同的问题:

  1. 您在最后一行中使用了名为document的标识符,但尚未定义任何此类标识符。相反,您在JavaScript端分配了名称dom来引用document。因此,最后一行应为let tag = dom |> get_by_id("main");

  2. 不幸的是,这仍然无法在“尝试原因”中运行,因为它在无法访问document的Web Worker中运行代码。

  3. Sketch.sh不使用BuckleScript,因此不理解BuckleScript FFI注释。但是,您可以使用https://nit.sketch.sh/

本文链接:https://www.f2er.com/3048669.html

大家都在问