lein cljsbuild
има проблеми с намирането на пространство от имена/файл, което е дефинирано точно до друго пространство от имена/файл, освен ако не се уверя, че са компилирани в определен ред.
Оформлението на моята директория изглежда така:
project/
project.clj
src/
cljs/
contempo/
common/
defs.cljs
view/
core.cljs
navigation.cljs
navigation.cljs
има някои неща за изграждане на Om компоненти за навигация из страницата, а 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/"
- person Jarlax   schedule 06.02.2015lein clean
. Ако това не работи, отидете във вашата директория~/.m2/
и изтрийте вашите Clojurescript и Clojure зависимости, те може да са в лошо състояние. - person sbensu   schedule 07.02.2015