使用defresource时无法解析Arg

时间:2019-05-25 17:44:01

标签: intellij-idea clojure ring liberator

我正在尝试使用解放者宏defresource,但是intellij IDE不断返回错误“(arg)无法解决”

我正在使用clojure,ring和liberator做一个项目,在这个项目中,我的依赖项为

:dependencies [[org.clojure/clojure "1.10.0"]
                 [liberator "0.15.3"]
                 [compojure "1.6.0"]
                 [ring/ring-core "1.7.1"]]

在代码中

(:require [liberator.core :refer [defresource resource]]
           [ring.middleware.params :refer [wrap-params]]
           [compojure.core :refer [defroutes ANY]]))
(defresource ok
             :available-media-types ["text/html"]
             :handle-ok "This is iia")
(defroutes app
           (ANY "/test" [] ok))
(def handler
  (-> app
      wrap-params))

使用defresource ok时,始终显示“无法解决”消息

2 个答案:

答案 0 :(得分:0)

如果您使用的是草书,则应该能够告诉IntelliJ将defresource视为def

请参阅Cursive的宏docs

答案 1 :(得分:0)

我猜您正在使用IntelliJ+Cursive

  1. 将光标置于defresource上。
  2. 键盘上的
  3. Alt+Enter(或弹出菜单中的Show Context Actions)。
  4. 您应该看到包含两个项目的弹出菜单,单击Resolve liberator.core/defresource as...
  5. 您应该会看到一些建议,单击defn

此后,IntelliJ应该将代码中的所有defresource都视为defn,并且相关警告也应消失。