lein cljsbuild
ha difficoltà a trovare uno spazio dei nomi/file definito accanto a un altro spazio dei nomi/file a meno che non mi assicuri che siano compilati in un determinato ordine.Il compilatore ClojureScript non trova lo spazio dei nomi/file nella stessa directory
mio layout directory assomiglia a questo:
project/
project.clj
src/
cljs/
contempo/
common/
defs.cljs
view/
core.cljs
navigation.cljs
navigation.cljs
ha alcune cose per costruire componenti Om per navigare all'interno della pagina, e core.cljs
è il principale punto di accesso per questa particolare pagina. navigation.cljs
inizia con:
(ns contempo.view.navigation (:require ...))
core.cljs
inizia con:
(ns contempo.view.core (:require [contempo.view.navigation :as navigation]))
Quando eseguo lein cljsbuild
, ottengo:
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
posso farlo funzionare, eliminando tutti i riferimenti a contempo.view.navigation
da core.cljs, eseguendo lein cljsbuild auto
e lasciando terminare la compilazione, quindi ripristinandoli e salvandoli (quindi cljsbuild preleva le modifiche), ma questo è sciocco e non dovrebbe essere necessario.
mio project.clj
assomiglia:
(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}}]})
C'è qualcosa ovvio che sto facendo male? Questo sembra abbastanza simile a ogni progetto ClojureScript che ho visto.
Aggiornamento: progetto scheletro piccolo che mostra l'errore è qui: namespace-error-demo.zip
Funziona per me senza errori/avvisi. Sospetto che tu abbia delle dipendenze circolari o che uno dei file sorgente non riesca a compilare. Inoltre, potrebbe valere la pena provare a usare il singolo percorso sorgente "" src/cljs/contempo/"' – Jarlax
Controllato per le dipendenze circolari, collassato giù a un solo percorso sorgente, e in realtà rimosso quasi tutto il codice, e continuo a ricevere errore. Un piccolo progetto che lo dimostra è disponibile qui: [namespace-error-demo.zip] (http://www.mohiji.org/files/namespace-error-demo.zip) – Jonathan
Ho appena scaricato e compilato la demo senza problemi. Prova con 'lein clean'. Se non funziona vai nella tua directory '~/.m2 /' ed elimina le tue dipendenze Clojurescript e Clojure, potrebbero essere in cattivo stato. – sbensu