我正在使用 Clojure 和 leinigen 构建后端项目。
这是我的文件的简化版本:
(ns simplified...
(:require [ring.middleware.json :refer [wrap-json-response]]
[ring.util.response :refer [response]]
[ring.middleware.json :refer [wrap-json-body]]
[ring.middleware.defaults :refer [wrap-defaults]]
[ring.adapter.jetty :as jetty]))
(defroutes rest-api-routes
(POST "/api" req
(clojure.pprint/pprint req)
"hello"))
(defn import-atb
[request-id tenant-id]
(let [trial-balance-report (middleware/wrap-json-body rest-api-routes {:keywords? true})])
trial-balance-report)
完成
lein clean
之后,当我运行lein repl
时,我得到:
#error {
:cause No such namespace: middleware
我的文件有什么问题吗?
快速修复方法是将
middleware/wrap-json-body
替换为 wrap-json-body
,因为它已被引用到命名空间中。
require
可以选择 :refer
选项。您在此处使用的 :refer
选项允许您直接从您自己的命名空间引用该命名空间的 var。 :as
选项将允许您为自己的命名空间添加别名。例如,您可以 (:require [ring.middleware.json :as ring-json])
,然后在命名空间中引用 ring-json/wrap-json-body
。