Clojurescript自我编译的def

时间:2015-08-07 00:42:10

标签: compilation clojurescript

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]}

如何修复设置?

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,这里有一些我必须做的事情让它运转起来:

  1. 将选项传递给 //remove from form this.Controls.Remove(picture); //release memory by disposing picture.Dispose(); ,您可能需要传递以下选项:

    eval-str
  2. 在评估:context :expr :def-emits-var true :ns 'cljs.user 之前,请先尝试评估(ns cljs.user)

  3. 那应该解决它。

    请参阅https://github.com/cljsinfo/cljs-api-docs/blob/catalog/refs/cljs.js_eval-str.md