'a is undefined' при компиляции cljs prj с модулем NPM в разделе: профиль prod
Я следовал этому совету: http://blob.tomerweller.com/reagent-import-react-components-from-npm и он работал отлично. Мне даже удалось использовать один из моих собственных модулей NPM поверх этого примера приложения перефрейма: https://github.com/Day8/re-frame/tree/master/examples/simple/
Запуск полученного приложения с:
lein clean && lein figwheel
все работает нормально, но когда я делаю:
lein do clean, with-profile prod compile
Я получаю TypeError: a is undefined
, Есть идеи, чтобы это исправить?
Позвольте мне предоставить вам код: плохой коммит здесь, в то время как оба :dev
а также :prod
профили работают нормально на этом только что предыдущем коммите.
Обновление: мне удалось исправить скомпилированную версию следующим образом (см. Коммит):
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,[…]
Это кажется мне неправильной конфигурацией компиляции или ошибкой.
Обновление 2: мой код компилируется нормально, если я установил :optimizations
в :simple
(было :advanced
). Посмотрите документ компилятора cljs об этой опции.
Благодарю.
1 ответ
Код, который терпит неудачу, здесь.
Похоже, вам может потребоваться предоставить внешние компоненты для clubexpr, чтобы компилятор Closure знал, что не нужно переписывать renderLispAsLatex
какkf
, При компиляции в:simple компилятор Closure не переписывает имена функций, поэтому эта проблема не будет отображаться.
Как примечание, вы, вероятно, не должны использоватьaget
чтобы получить объекты из окна,aget
предназначен только для доступа к массиву. Чтобы получить объекты, вы должны использовать goog.object/get
, См. Этот пост в Проверенном доступе к массиву для получения дополнительной информации об этом.