欢迎!请查看 关于 页面,了解更多有关这个平台的信息。
相关讨论- https://github.com/clojure-emacs/cider/issues/2099#issuecomment-661940099
(ns user (:require [cljs.analyzer :as analyzer])) (let [ns-env (assoc-in (analyzer/empty-env) [:ns [:name]] 'cljs.user)] (analyzer/macroexpand-1 ns-env `(defn ~'foo [~'x] ~'x))) ;; (clojure.core/defn foo [x] x) (macroexpand-1 `(defn ~'foo [~'x] ~'x)) ;; (def foo (clojure.core/fn ([x] x)))
您需要绑定 cljs.env/*compiler* 绑定(例如,通过 cljs.env/with-compiler-env),并且已经分析相关的命名空间(例如,cljs.core)。
cljs.env/*compiler*
cljs.env/with-compiler-env
cljs.core
我不知道您需要进行的确切操作顺序,但本质上您缺少编译器环境(这与宏展开调用本身传入的环境不同)。