lein cljsbuild
在查找與另一個命名空間/文件一起定義的命名空間/文件時遇到問題,除非我確保它們按特定順序編譯。ClojureScript編譯器無法在同一目錄中找到命名空間/文件
我的目錄結構是這樣的:
project/
project.clj
src/
cljs/
contempo/
common/
defs.cljs
view/
core.cljs
navigation.cljs
navigation.cljs
有一些東西來構建嗡組件頁面各處導航和core.cljs
是這個特定頁面的主入口點。 navigation.cljs
打頭:
(ns contempo.view.navigation (:require ...))
core.cljs
打頭:
(ns contempo.view.core (:require [contempo.view.navigation :as navigation]))
當我運行lein cljsbuild
,我得到:
solace:Groov jfischer$ lein cljsbuild auto
Compiling ClojureScript.
Compiling "war/view/js/app.js" from ["src/cljs/contempo/common" "src/cljs/contempo/view"]...
Compiling "war/view/js/app.js" failed.
clojure.lang.ExceptionInfo: failed compiling file:src/cljs/contempo/view/core.cljs
... snipped stacktrace ...
Caused by: clojure.lang.ExceptionInfo: No such namespace: contempo.view.navigation at line 1 src/cljs/contempo/view/core.cljs
我可以得到它通過刪除所有引用contempo.view.navigation
工作core.cljs,運行lein cljsbuild auto
並讓編譯完成,然後把它們放回去並保存(所以cljsbuild接受更改),但這是愚蠢,不應該是必要的。
我project.clj
樣子:
(defproject contempo "0.0.0-SNAPSHOT"
:description "Experimenting with ClojureScript and Om"
:dependencies [[org.clojure/clojure "1.6.0"]
[org.clojure/clojurescript "0.0-2740"]
[org.clojure/core.async "0.1.346.0-17112a-alpha"]
[org.omcljs/om "0.8.7"]]
:plugins [[lein-cljsbuild "1.0.4"]]
:clean-targets ^{:protect false} ["war/view/js/app.js"
"war/view/js/out"]
:cljsbuild {:builds [{:id "view-dev"
:source-paths ["src/cljs/contempo/common"
"src/cljs/contempo/view"]
:compiler {:output-to "war/view/js/app.js"
:output-dir "war/view/js/out"
:optimizations :none
:cache-analysis true
:source-map true}}]})
有什麼明顯我做錯了嗎?這看起來很像我看過的每個ClojureScript項目。
更新:顯示錯誤微小的骨架項目是在這裏:namespace-error-demo.zip
適用於我,沒有錯誤/警告。我懷疑你是否有循環依賴或者其中一個源文件無法編譯。另外,可能值得嘗試使用單一源代碼路徑'「src/cljs/contempo /」' – Jarlax 2015-02-06 12:26:33
檢查循環依賴關係,將它摺疊爲只有一個源代碼路徑,並且實際上刪除了幾乎所有的代碼,而且我仍然得到錯誤。 一個很小的項目,演示它可以在這裏找到:[namespace-error-demo.zip](http://www.mohiji.org/files/namespace-error-demo。zip) – Jonathan 2015-02-07 00:40:53
我剛剛下載和編譯演示沒有問題。試着用'lein clean'。如果這不起作用,進入你的'〜/ .m2 /'目錄並刪除你的Clojurescript和Clojure依賴項,它們可能會處於不良狀態。 – sbensu 2015-02-07 13:23:45