$jscomp未在为clojurescript和试剂加载的代码中定义



使用clojudescript 1.10.758和试剂1.0.0时,我遇到了一个错误,其中一个文件index.js试图引用未定义的$jscomp

我已经看到许多与$jscomp相关的Stackoverflow和Github问题在shadow cljs的上下文中未定义,但我没有使用它。

当我使用带有figwheel的开发模式构建(使用带有cljsbuild和figwheel插件的Leiningen(时,就会出现这个问题,如果我使用cljsbuild进行一次性开发构建,也会出现这个问题。奇怪的是,如果我使用webpack创建捆绑包,问题就不会出现。

在我尝试让webpack工作之前,我确实有没有webpack的工作代码。我更改的某些内容似乎影响了非捆绑构建。我唯一能做的改变是使用npm安装react和react dom,并将这些包从Leiningen的依赖项中的试剂中排除。但取消排除并没有使非捆绑代码再次工作。

对于如何在首次需要时定义$jscomp,有什么建议吗?

$jscomp与闭包编译器及其创建的Polyfill有关。

调整:language-out :es6编译器选项可能就足够了,它与shadow-cljs使用的:output-feature-set选项有些相似。调试这一问题的最佳方法是找到被polyfilled的实际代码以及原因。可能需要挖掘一些编译过的JS。

shadow-cljs比常规的CLJS或figwheel更广泛地使用闭包编译器,但他们也使用它。适用于shadow-cljs的解决方案几乎也适用于其他工具。只是设置可能会有点不同。

最新更新