Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
宏扩展clojure.core/let时出现语法错误_Clojure - Fatal编程技术网

宏扩展clojure.core/let时出现语法错误

宏扩展clojure.core/let时出现语法错误,clojure,Clojure,我正在使用shadowcljs,并试图使用基于示例代码的代码在服务器上创建一个变体。我有一个非常小的变异,总是抛出这个错误。为什么呢 [jchat.server-components.pathom-wrappers :refer [defmutation defresolver]] (defmutation reset-users-db "Removes all users" [] {::pc/output [:me

我正在使用shadowcljs,并试图使用基于示例代码的代码在服务器上创建一个变体。我有一个非常小的变异,总是抛出这个错误。为什么呢

[jchat.server-components.pathom-wrappers :refer [defmutation defresolver]]

(defmutation reset-users-db
             "Removes all users"
             []
             {::pc/output [:message]}
             {:message "ok"})
宏扩展clojure.core/let时出现语法错误(user.clj:47:1)。零- 失败:简单符号?at:[:绑定:形式:本地符号]规范: :clojure.core.specs.alpha/local-name nil-失败:向量?地址: [:bindings:form:seq destructure]规范: :clojure.core.specs.alpha/seq-binding-form nil-失败:映射?地址: [:bindings:form:map destructure]规范: :clojure.core.specs.alpha/map-bindings nil-失败:映射?地址: [:bindings:form:map destructure]规范: :clojure.core.specs.alpha/map-special-binding

第47行是开始行

使用
宏展开

(macroexpand '(defmutation reset-users-db
                           "Removes all users"
                           []
                           {::pc/output [:message]}
                           {:message "ok"}))
=>
(do
 (com.wsscode.pathom.connect/defmutation
  reset-users-db
  [env__26870__auto__ params__26871__auto__]
  #:com.wsscode.pathom.connect{:output [:message]}
  (clojure.core/let [nil env__26870__auto__ nil params__26871__auto__] {:message "ok"}))
 (jchat.server-components.pathom-wrappers/register! reset-users-db))

多亏Carcigenicate帮助我调试和理解去迁移,我们发现突变需要2个参数

例如:

(defmutation reset-users-db
             "Removes all users"
             [env params]
             {::pc/output [:message]}
             (println "test"))

尝试在调用
macroexpand
时将其包装起来,以查看它是否扩展到了一些奇怪的地方。我以前从来没有听说过这个宏。我用宏expand更新了我的问题。很可能
(clojure.core/let[nil env_uu26870…
(let[nil”“)
导致1.7.0中出现
。我不知道为什么扩展中会出现
nil
,但这是你的问题。哦,它需要2个in参数。这就是为什么那些
nil
会出现的原因。谢谢。我很高兴你找到了它。不过,如果可以,请发布一个快速回答,解释问题所在。