引用外部ClojureScript命名空间

3
如果在一个.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")

我收到了一个错误信息:"在src-cljs/main.cljs中,变量project.secondfile/my-var未定义"。然而,在浏览器中它可以正常工作,因为两者都被编译了(使用:whitespace编译选项它们可以很好地相互引用)。但是显然,在bREPL中它们没有相互引用,所以无法正常工作。
这是不可避免的吗?还是我做错了什么?
谢谢!
1个回答

1
我已经尝试了您的代码,并且在我的当前配置中运行良好。我曾遇到过类似于您的问题的其他问题,在这些情况下,您可以尝试在编译和加载main.cljs之前将secondfile.cljs编译并加载到brepl中。在这种情况下,这个技巧很有效。也许问题是secondfile.cljs(以及def my-var)在cljsbuild编译之前不存在,因此当您尝试使用这个my-var时,该代码不可用。
我希望这能帮助您 Juan

2
这就是全部内容了。使用brepl编译它们有些繁琐,但是它能够工作。另一个看起来可行的选项是按字母顺序排序。编译器似乎使用了file-seq,它使用file.listFiles(),它不能保证顺序,但至少大部分时间都能正常工作,而且更容易(最后它并不重要,只是消除警告)。 - Leberecht Reinhold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接