def 的 Clojurescript 自编译
Clojurescript Self Compile of def
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]}
.
如何修复设置?
我遇到了同样的问题,这里有一些我必须做的事情才能让它正常工作:
将选项传递给 eval-str
,您可能必须传递如下选项:
:context :expr
:def-emits-var true
:ns 'cljs.user
先尝试评估 (ns cljs.user)
,然后再评估 def
。
应该可以解决问题。
见https://github.com/cljsinfo/cljs-api-docs/blob/catalog/refs/cljs.js_eval-str.md
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]}
.
如何修复设置?
我遇到了同样的问题,这里有一些我必须做的事情才能让它正常工作:
将选项传递给
eval-str
,您可能必须传递如下选项::context :expr :def-emits-var true :ns 'cljs.user
先尝试评估
(ns cljs.user)
,然后再评估def
。
应该可以解决问题。
见https://github.com/cljsinfo/cljs-api-docs/blob/catalog/refs/cljs.js_eval-str.md