2015-02-05 17 views
5

lein cljsbuild, belirli bir sırada derlendiklerinden emin olmadan başka bir ad alanı/dosya ile birlikte tanımlanan bir ad alanı/dosya bulmakta zorlanıyor.ClojureScript derleyici, aynı dizinde ad alanı/dosya bulamıyor.

project/ 
    project.clj 
    src/ 
    cljs/ 
     contempo/ 
     common/ 
      defs.cljs 
     view/ 
      core.cljs 
      navigation.cljs 

navigation.cljs sayfa etrafında gezinmek için Om bileşenlerini oluşturmak için bazı şeyler vardır ve core.cljs bu belirli bir sayfa için ana giriş noktasıdır:

Benim dizin düzeni buna benzemez. ile

(ns contempo.view.navigation (:require ...)) 

core.cljs başlar: ile navigation.cljs başlar Ben lein cljsbuild çalıştırdığınızda

(ns contempo.view.core (:require [contempo.view.navigation :as navigation])) 

, alıyorum:

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 

ben ondan contempo.view.navigation tüm başvuruları kaldırarak işe alabilirsiniz core.cljs, lein cljsbuild auto'u çalıştırarak ve derlemenin tamamlanmasına izin verdikten sonra, onları geri getirerek ve kaydederek (böylece cljsbuild değişiklikleri alır) aptalca ve gerekli olmamalı.

(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}}]}) 

yapıyorum yanlış bariz bir şey var mı: gibi

Benim project.clj görünüyor? Bu baktığım her ClojureScript projesine oldukça benziyor.

Güncelleme: Tiny iskelet proje hata gösterir işte burada: namespace-error-demo.zip

+0

Hata/uyarılar olmadan benim için çalışır. Dairesel bağımlılıklarınız olduğunu veya kaynak dosyalardan birinin derlenemediğinden şüpheleniyorum. Ayrıca, tek kaynak yolunu kullanarak denemeye değer olabilir "src/cljs/contempo /" ' – Jarlax

+0

Dairesel bağımlılıklar için kontrol edildi, sadece bir kaynak yoluna çöktü ve aslında hemen hemen tüm kod kaldırıldı ve ben hala hata. Bunu gösteren küçük bir proje şu adrestedir: [namespace-error-demo.zip] (http://www.mohiji.org/files/namespace-error-demo.zip) – Jonathan

+1

Demoyu yeni indirdim ve sorunsuz bir şekilde derledim. Lein clean ile deneyin. Bu işe yaramazsa, ~/.m2/'dizinine gidin ve Clojurescript ve Clojure bağımlılıklarınızı silin, kötü bir durumda olabilir. – sbensu

cevap

4

["src/cljs"] değişen denemek isteyebilirsiniz. Ben contempo.view.whatever ad gerekirse src/cljs/contempo/common ve src/cljs/contempo/view kaynağı yolları ile

, derleyici src/cljs/contempo/common/contempo/view/whatever.cljs ve src/cljs/contempo/view/contempo/view/whatever.cljs de bunun için olmazdı.

Kaynak dizin olarak src/cljs kullanmam gerekiyordu. Çekmek istediğim şey (gerekmeyen bir sayfanın kodunun dışarı çıkması) bir çeşit aptaldı (zaten tüm ClojureScript'te çekiliyordu) ve şimdi proper Google Closure Module support in ClojureScript sayesinde düzgün bir şekilde adreslendi.

2

Bu aynı sorunu olan bugünün tüm edildi. Benim durumumda, kök neden .cljs dosyaları adıyla "-" sahipti. Ben sadece, bu daha sonra cljs derleyici daha yeni sürümleri ad alanı sözleşmeleri için sıkı dosya yolu için daha iyi hata iletileri sağlayan 0.0-3030 geçiş yaptıktan sonra sorun olduğunu keşfettim. Ben ad çözülür nasıl kurallarını uyarak değildi:

Sen mesele halini sona erdi :source-paths

+0

Çok teşekkürler! Tam olarak aynı sorunu yaşıyordum ve yorumunuz olmadan anlayamadım! –

İlgili konular