在ClojureScript项目中包含.clj文件

时间:2015-12-23 02:01:11

标签: clojure clojurescript

我在ClojureScript中构建一个Node.js应用程序并测试宏。

目录结构:

├── project.clj
└── src
    └── lists
        ├── core.cljs
        └── lib.clj

project.clj:

(defproject lists "0.1.0-SNAPSHOT"
  :source-paths ["src/"]
  :dependencies [[org.clojure/clojure "1.7.0"]]
  :plugins [[lein-cljsbuild "1.1.2"]]
  :cljsbuild {:builds
              [{:source-paths ["src"]
                :compiler {:output-to "target/lists.js"
                          :optimizations :simple
                          :target :nodejs}}]})

SRC /列表/ core.cljs:

(ns lists.core
  (:require [lists.lib :as lib :include-macros true]))

(enable-console-print!)

(lib/defmain [& args]
  (console.log "hello world"))

SRC /列表/ lib.clj:

(ns lists.lib)

(defmacro defmain [& body]
  `(set! *main-cli-fn* (fn ~@body)))

当我运行lein cljsbuild once时,我得到一个包含以下内容的巨大错误回溯:

Caused by: clojure.lang.ExceptionInfo: No such namespace: lists.lib, could not locate lists/lib.cljs or lists/lib.cljc at line 1 src/lists/core.cljs {:file "src/lists/core.cljs", :line 1, :column 1, :tag :cljs/analysis-error}

文件夹结构正确,外部都有:source-paths defproject调用和内部:cljsbuild :builds对象。甚至更奇怪的是什么 有时它会在没有打印的情况下退出。有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

cljsbuild抛出异常,因为它不了解.clj文件,它正在“src”目录中查找.cljs或.cljc文件。你必须将lib.clj重命名为lib.cljc,在cl​​ojurescript wiki上检查using cljc