Clojurescript 1.7现在支持自编译(参见here)。我可以编译代码如下
(ns self-compile.core
(:require cljs.js))
(enable-console-print!)
(set! cljs.js/*eval-fn* cljs.js/js-eval)
(def state (cljs.js/empty-state))
(cljs.js/eval-str state "(+ 1 2)"
(fn [response] ...))
这适用于大多数代码,(def a 3)
除外,它会产生错误#error {:message "ERROR", :data {:tag :cljs/analysis-error}, :cause #object[TypeError TypeError: Cannot set property 'a' of undefined]}
。
如何修复设置?
答案 0 :(得分:3)
我遇到了同样的问题,这里有一些我必须做的事情让它运转起来:
将选项传递给 //remove from form
this.Controls.Remove(picture);
//release memory by disposing
picture.Dispose();
,您可能需要传递以下选项:
eval-str
在评估:context :expr
:def-emits-var true
:ns 'cljs.user
之前,请先尝试评估(ns cljs.user)
。
那应该解决它。
请参阅https://github.com/cljsinfo/cljs-api-docs/blob/catalog/refs/cljs.js_eval-str.md