如何在 deps.edn 项目中使用 cljsjs 包

How do I use cljsjs packages in a deps.edn project

我试过向我的 deps.edn 添加依赖项:

{:deps {cljsjs/js-yaml   {:mvn/version "3.3.1-0"}
       ...}

但我无法调用该库中的函数。

在 REPL 中:

cljs.user=> (require '[cljsjs.js-yaml])
cljs.user=> js/safeLoad
Execution error (ReferenceError) at (<cljs repl>:1).
safeLoad is not defined

我找到的 instructions 是给 leinigen (project.clj) 的。我需要做一些特别的事情才能让它在 deps.edn 中工作吗?

您需要执行 js/jsyaml.safeLoad 并且在 repl 中您需要使用函数 require 而不是 ns 声明中使用的符号。

bfabry@18723-bfabry /t/foo> plk
ClojureScript 1.10.520
cljs.user=> (require '[cljsjs.js-yaml])
nil
cljs.user=> (js/jsyaml.safeLoad "app:\n  bar: baz\n")
#js {:app #js {:bar "baz"}}
cljs.user=>

这些包使用它们自己名称的 js 对象命名空间。