Compilation def的Clojurescript自编译

Compilation def的Clojurescript自编译,compilation,clojurescript,Compilation,Clojurescript,Clojurescript 1.7现在支持自编译(请参阅)。我可以编译如下代码 (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]

Clojurescript 1.7现在支持自编译(请参阅)。我可以编译如下代码

(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)
,: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
    
  • 在评估
    def
    之前,请先尝试评估
    (ns cljs.user)

  • 这应该可以解决问题


    请看

    我猜您需要在名称空间中调用它?是的,但不知道如何在cljs.js中调用它。