我想编写和编译cubes.ml
,以便1)它包装一个OCaml函数来创建一个可以在web中调用的JS函数; 2)OCaml函数和字节码仍然可以在Linux下的命令行中进行测试。
cubes.ml
如下:
let () =
let oneArgument (a: int) = a + 100 in
Js.Unsafe.global##.jsOneArgument := Js.wrap_callback oneArgument;
print_string "hello\n";
exit 0
以下2个命令生成字节码T
,并将T
转换为cubes.js
:
ocamlfind ocamlc -package js_of_ocaml.ppx -linkpkg cubes.ml -o T
js_of_ocaml T -o cubes.js
我已经测试过jsOneArgument
的函数cubes.js
可以被其他JS或HTML文件调用。所以我的目标很满意。
但是,我的目标无法满足:./T
会返回错误:
:testweb $ ./T
Unimplemented Javascript primitive caml_pure_js_expr!
虽然node cubes.js
返回hello
,但我确实需要能够直接测试./T
,因为当出现错误时,它会很好地显示错误位置,而显示的信息node cubes.js
不可读......
那么有谁知道如何解决这个问题?
PS:node --version
给出v6.1.0
; npm --version
给出3.8.6
; ocaml -version
给出The OCaml toplevel, version 4.02.3
。
js_of_ocaml --version
提供2.7
。
答案 0 :(得分:4)
我仍然认为没有避免使用cmake ..
cmake --build .
,但是您可以通过以下方式改善其返回的信息
使用调试信息编译OCaml(将node
选项添加到-g
)
将选项ocamlc
添加到调用--debuginfo --sourcemap --pretty
在您的示例中,您必须这样做
js_of_ocaml