我需要在Clojure(Garden)和ClojureScript(Reagent)之间共享一个命名空间。
当前项目文件夹的结构如下:
src/
clj/
name/
css.clj
cljs/
name/
core.cljs
cljc/
name/
config.cljc
< p > config.cljc
文件有以下命名空间: (ns name.config)
。
我试图从 clj/name/css.clj
中使用 require 引用此命名空间。
(ns name.css
(:require [name.config :as config]))
然而,这会导致 Garden 出现编译错误。
引发的原因是:java.io.FileNotFoundException: Could not locate name/config__init.class or name/config.clj on classpath.
我猜它甚至没有检查 cljc 文件。
我在 project.clj 和 :garden :builds 的 source-paths 向量中添加了 "src/cljc",但即使重启构建进程,仍然出现相同的错误。
我在 Clojure 1.7.0 和 1.8.0 中看到这种行为。
值得一提的是,在 ClojureScript 中(由 Figwheel 处理构建)可以无问题地工作。我可以轻易地要求和使用新的命名空间。
看起来我必须错过了某些非常简单的东西,因为关于 .cljc 文件的所有文档甚至都没有提到需要它们。
project.clj
文件中使用了"1.7.0"
版本的org.clojure/clojure
,当启动 REPL 时,它会确认使用的是Clojure 1.7.0
。是否还需要在project.clj
中设置其他内容? - Dan Prince