Препратка към външни пространства от имена на clojurescript

Ако в .cljs файл дефинирам файл като този:

main.cljs

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

   (js/alert my-var)

secondfile.cljs

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

Получавам „Referred var project.secondfile/my-var does not exist at src-cljs/main.cljs“. Въпреки това работи нормално в браузъра, тъй като и двата са компилирани (и с компилации :whitespace те могат да се препращат взаимно добре). Но очевидно това не работи в bREPL, тъй като те не се позовават един на друг.

Това нещо неизбежно ли е или правя нещо нередно?

Благодаря!


person Leberecht Reinhold    schedule 24.10.2013    source източник


Отговори (1)


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

Надявам се това да ти помогне
Хуан

person tangrammer    schedule 25.10.2013
comment
Това беше. Необходимостта да ги компилирате с помощта на brepl е малко тромаво, но работи. Друг вариант, който изглежда работи, е азбучен ред. Компилаторът изглежда използва file-seq, който използва file.listFiles(), което не гарантира ред, но най-малкото работи през повечето време и е по-лесно (и в крайна сметка наистина няма значение, просто получава отървете се от предупрежденията). - person Leberecht Reinhold; 25.10.2013