我只是弄坏了我们的 cljsbuild,我很想知道这是错误还是预期行为。
我们有一个外部的 JS 文件定义了一个全局对象和函数: link.myfn()
,有一个描述它的 externs 文件。我们有一个与前缀共享的命名空间: link.theme
。在开发中,这按预期工作。然而,在高级优化中,它失败了,因为我们的 cljs 输出以某种方式定义了一个空的 link
对象,实际上覆盖了来自外部库的对象。如果我不排除 externs 和外部库,就不会创建空对象。
我已经创建了一个可以复现这个问题的仓库,并解释了我在其中尝试的四种情况,只有其中一种会失败:https://github.com/cjohansen/cljsns
这看起来像是一个错误,但可能是我不知道的一些编译器细节。有人知道吗?