我刚刚破坏了我们的 cljsbuild,我很想知道这是bug还是预期行为。
我们有一个外部JS文件,它定义了一个全局对象以及一个函数:link.myfn()
,我们还有一个描述它的externs文件。我们有一个命名空间,它共享前缀:link.theme
。在开发过程中,它按预期工作。然而,使用高级优化时它失败了,因为我们的 cljs 输出似乎定义了一个空的 link
对象,这条声明有效地覆盖了来自外部库的对象。如果我不排除externs和外部库,就不会创建空对象。
我已经上传了一个可以重现这个问题的repo,并解释了我在其中尝试的四种情况,但只有一个是失败的:https://github.com/cjohansen/cljsns
这对我来说看起来像是一个bug,但可能是我不知道的编译器细节。有人知道吗?