0

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

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

当我使用带有 figwheel 的开发模式构建(使用带有 cljsbuild 和 figwheel 插件的 Leiningen)时会出现问题,并且如果我将 cljsbuild 用于一次性开发构建也会出现问题。奇怪的是,如果我使用 webpack 创建一个 bundle,这个问题就不会出现。

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

关于如何在$jscomp第一次需要时进行定义的任何建议?

4

1 回答 1

2

$jscomp与 Closure Compiler 和它创建的 Polyfills 有关。

调整编译器选项可能就足够了,:language-out :es6这有点类似于. 调试此问题的最佳方法是找到正在填充的实际代码及其原因。不过可能需要挖掘一些已编译的 JS。:output-feature-setshadow-cljs

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

于 2021-04-20T08:42:27.590 回答