宏扩展clojure.core/let时出现语法错误
我正在使用shadowcljs,并试图使用基于示例代码的代码在服务器上创建一个变体。我有一个非常小的变异,总是抛出这个错误。为什么呢宏扩展clojure.core/let时出现语法错误,clojure,Clojure,我正在使用shadowcljs,并试图使用基于示例代码的代码在服务器上创建一个变体。我有一个非常小的变异,总是抛出这个错误。为什么呢 [jchat.server-components.pathom-wrappers :refer [defmutation defresolver]] (defmutation reset-users-db "Removes all users" [] {::pc/output [:me
[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
会出现的原因。谢谢。我很高兴你找到了它。不过,如果可以,请发布一个快速回答,解释问题所在。