Я пробовал добавить зависимость к моему 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

Я нашел инструкции для leinigen (project.clj). Нужно ли мне делать что-то особенное, чтобы он работал в deps.edn?

0
Vituel 18 Окт 2019 в 23:11

1 ответ

Лучший ответ

Вам нужно выполнить js / jsyaml.safeLoad, и в ответе вам нужно использовать функцию 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 с их собственным именем.

1
bfabry 18 Окт 2019 в 21:04