Compilation ';a未定义';在:prod profile下使用NPM模块编译cljs prj时

Compilation ';a未定义';在:prod profile下使用NPM模块编译cljs prj时,compilation,clojurescript,cljsbuild,Compilation,Clojurescript,Cljsbuild,我遵循这个方法:而且效果很好。我甚至在re frame的示例应用程序上使用了我自己的NPM模块: 使用以下命令启动生成的应用程序: lein clean && lein figwheel 一切正常,但当我这样做时: lein do clean, with-profile prod compile 我得到一个类型错误:a未定义。有办法解决这个问题吗 让我给你提供代码:错误的提交是, 而:dev和:prod配置文件工作正常 更新:我成功地修复了编译后的版本,如下所示(请参阅):

我遵循这个方法:而且效果很好。我甚至在re frame的示例应用程序上使用了我自己的NPM模块:

使用以下命令启动生成的应用程序:

lein clean && lein figwheel
一切正常,但当我这样做时:

lein do clean, with-profile prod compile
我得到一个
类型错误:a未定义。有办法解决这个问题吗

让我给你提供代码:错误的提交是, 而
:dev
:prod
配置文件工作正常

更新:我成功地修复了编译后的版本,如下所示(请参阅):

在我看来,这似乎是一个编译错误或错误

更新2:如果我将
:optimizations
设置为
:simple
(was
:advanced
),则我的代码编译正常。看


谢谢。

失败的代码是

看起来您可能需要提供clubexpr,以便闭包编译器知道不要将
renderisplatex
重写为
kf
。在:simple下编译时,闭包编译器不会重写函数名,因此不会出现此问题


作为旁注,您可能不应该使用
aget
从窗口获取对象,
aget
仅用于阵列访问。要获取对象,应该使用
goog.object/get
。有关这方面的更多信息,请参阅上的这篇文章。

失败的代码是

看起来您可能需要提供clubexpr,以便闭包编译器知道不要将
renderisplatex
重写为
kf
。在:simple下编译时,闭包编译器不会重写函数名,因此不会出现此问题


作为旁注,您可能不应该使用
aget
从窗口获取对象,
aget
仅用于阵列访问。要获取对象,应该使用
goog.object/get
。有关这方面的更多信息,请参阅上的这篇文章。

感谢您的回答和这条最新的宝贵信息。但是我不熟悉externs,也没有使用在线工具。我的模块结构是否正确?不确定抱歉,上有很多信息。好的,现在没有太多时间尝试,但我会让您不断更新,并相应地投票/接受您的答案。谢谢谢谢你的回答和这条最近的宝贵信息。但是我不熟悉externs,也没有使用在线工具。我的模块结构是否正确?不确定抱歉,上有很多信息。好的,现在没有太多时间尝试,但我会让您不断更新,并相应地投票/接受您的答案。谢谢
  return d.c?d.c(c,v,w):d.call(null,c,v,w)}}(G,r,b,c,d,e)),I=dw(G);rf.b?: […]
  };w.b=v;w.c=f;return w}()}(c,d,e,f))};hf.b(ow,ik);hf.b(ow,bp);hf.b(ow,To); […]
  function nx(a){var b=window.deps["react-mathjax"],
-    c=window.deps.clubexpr.kf;
+    c=window.deps.clubexpr.renderLispAsLaTeX;
  return new U(null,3,5,V,[Vj,b.Context,new U(null,4,null)}
  function Wv(){return function(a){return function(){return new U(null,6,5,V,[…]