我在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
对象。甚至更奇怪的是什么
有时它会在没有打印的情况下退出。有人有什么想法吗?
答案 0 :(得分:1)
cljsbuild抛出异常,因为它不了解.clj文件,它正在“src”目录中查找.cljs或.cljc文件。你必须将lib.clj重命名为lib.cljc,在clojurescript wiki上检查using cljc。