使用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
的解决方案几乎也适用于其他工具。只是设置可能会有点不同。