在使用NPM模块编译cljs prj时,'a is undefined':prod profile

时间:2017-07-19 21:26:36

标签: compilation clojurescript cljsbuild

我遵循了这个方法:http://blob.tomerweller.com/reagent-import-react-components-from-npm并且效果很好。我甚至设法在这个重新框架的示例应用程序之上使用我自己的一个NPM模块:https://github.com/Day8/re-frame/tree/master/examples/simple/

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

TypeError: a is undefined

一切正常,但是当我这样做时:

:dev

我得到:prod。有什么想法解决这个问题吗?

让我为您提供代码:错误提交是here, 虽然 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,[…] :optimizations个人资料都可以正常at this just previous commit

更新:我设法修复了这样的编译版本(请参阅the commit):

:simple

在我看来,编译错误配置或错误。

更新2 :如果我将:advanced设置为dgammadgamma(x, shape, rate = 1, scale = 1/rate, log = FALSE) ),我的代码就会编译好。请参阅the cljs compiler doc about this option

感谢。

1 个答案:

答案 0 :(得分:1)

失败的代码是here

看起来您可能需要为clubexpr提供externs,以便Closure编译器知道不要将renderLispAsLatex重写为kf。在简单编译时,Closure Compiler不会重写函数名,因此不会出现此问题。

作为旁注,您可能不应该使用aget从窗口获取对象,aget仅用于数组访问。要获取对象,您应该使用goog.object/get。有关详情,请参阅Checked Array Access上的这篇文章。