2013-10-24 1 views
3

Если в файле .cljs я определить файл, как это:Эталонные внешний 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") 

Я получаю «ПЕРЕДАННЫЕ вар project.secondfile/my-var не существует в src-cljs/main.cljs ". Тем не менее, он работает нормально в браузере, поскольку оба скомпилированы (и с компиляциями: пробелы, они могут ссылаться друг на друга просто отлично). Но, очевидно, это не работает в bREPL, поскольку они не относятся друг к другу.

Это что-то неизбежное, или я что-то не так?

Спасибо!

ответ

1

Я пробовал ваш код и отлично работает в моей текущей конфигурации. У меня были другие проблемы, похожие на ваш вопрос, и в этих случаях вы можете попытаться скомпилировать и загрузить secondfile.cljs в бреп, прежде чем пытаться скомпилировать и загрузить main.cljs. В этом случае этот трюк работает отлично. Может быть, проблема в том, что secondfile.cljsdef my-var) не существовало до cljsbuild компиляции, поэтому, когда вы пытались использовать этот my-var этот код не был доступен

Я надеюсь, что это поможет вам
Juan

+2

Так оно и было. Необходимость компилировать их с помощью brepl немного громоздка, но она работает. Другой вариант, который, похоже, работает в алфавитном порядке. Компилятор, похоже, использует файл-seq, который использует file.listFiles(), который не гарантирует порядок, но, по крайней мере, работает большую часть времени, и это проще (и, в конце концов, это действительно не имеет значения, просто получается избавиться от предупреждений). –