2013-10-24 73 views
3

如果在.cljs文件I定義這樣的文件:參考外部clojurescript命名空間

main.cljs

(ns project.main 
     (:use [project.secondfile :only [my-var]])) 

    (js/alert my-var) 

secondfile.cljs

(ns project.secondfile) 
    (def my-var "Hi") 

我得到一個「中提到VAR project.secondfile/my-var在src-cljs/main.cljs中不存在「。然而,它在瀏覽器中正常工作,因爲兩者都被編譯(並且通過編譯:它們可以相互引用的空白就好)。但顯然,它在bREPL中不起作用,因爲它們不是相互指責的。

這是不可避免的或我做錯了什麼?

謝謝!

回答

1

我試過你的代碼,並且在我當前的配置下正常工作。 我有其他問題類似於您的問題,在這種情況下,您可以嘗試編譯並加載secondfile.cljs到brepl,然後再嘗試編譯和加載main.cljs。在這種情況下,這個技巧工作正常。 也許問題是,secondfile.cljs(和def my-var)的cljsbuild編譯前並不存在,所以當你試圖用這個my-var這個代碼是不可用

我希望這有助於你
胡安

+2

就是這樣。不得不使用brepl編譯它們有點麻煩,但它起作用。似乎工作的另一個選項是字母順序。編譯器似乎使用file-seq,它使用file.listFiles(),它不保證順序,但至少在大多數情況下工作並且更容易(最終它確實沒有關係,只是獲取擺脫警告)。 –