我在开发一个 pedestal 应用。我使用了 core.contracts 来测试 clojure/clojurescript 共享代码(在 clojure 中)并取得了非常好的效果(至少对我来说是这样的)。然而,当我将包含 core.contracts 的命名空间在浏览器中打开时,尝试将其引入 clojurescript 中,我遇到了以下错误。我所写的约束实际上并没有使用任何原生的 Java 类型(至少我认为没有)。我主要只是检查事物的值是否符合我的预期输入和输出。
在我的 behavior.clj 中我有
(ns ^:shared com.samedhi.contracts.app.behavior
(:require (link: clojure.string :as string)
(link: io.pedestal.app.messages :as msg)
(link: clojure.zip :as z))
(:use (link: clojure.core.contracts :only [contract with-constraints)]
(link: clojure.core.contracts.constraints :only [defconstrainedfn])
(link: clojure.test :only [is])))
这编译成 cljs 为
...
goog.require('clojure.core.contracts.constraints');
goog.require('com.samedhi.quizry.app.quiz');
goog.require('clojure.core.contracts');
goog.require('clojure.test');
...
这会在查看 data-ui 视图时抛出javascript异常,并在 goog.require('clojure.core.contracts.constraints') 处显示
errorMessage: "goog.require could not find: clojure.core.contracts.constraints"
name: "clojure.core.contracts.constraints"
我需要以某种特殊方式在 clojurescript 中导入项才能使用 core.contracts 吗?
顺便说一句,我真的很欣赏 core contracts,它真的很酷。谢谢你的工作。