0

我运行测试:

lein midje :autotest

我得到错误:

线程“主”java.lang.Exception 中的异常:没有命名空间:找到 sprint-is.json-export

文件在:sprint-is/src/sprint_is/json_export.clj

它包含代码:

(ns sprint-is.json-export)
(require [[noir.response :as response]])
(defn serialize [value] (response/json value))

即使我没有测试文件,它也会引发此错误。当我创建测试文件时,我得到了类似的错误:

没有命名空间:sprint-is.test.json-export 找到

测试在:sprint-is/test/sprint_is/json_export.clj

并包含:

(ns sprint-is.test.json-export
    (:require [sprint-is.json-export :as json-export]))

(fact "module can serialize scalar values"
    (json-export/serialize 123) => 123)

当我尝试从 REPL 导入它时,它也找不到命名空间。我试图重命名文件,移动文件,重命名目录,删除 ns(它编译但它不起作用),在 Clojure IRC 上询问。我将代码与其他项目(包括在我的计算机上工作的项目)进行了比较,看起来是一样的。

源代码在这里:https ://bitbucket.org/jiriknesl/sprintis

4

1 回答 1

2

我怀疑你的一个命名空间中有一个编译错误sprint-is.json-export

在 bitbucket 上,你有这个:

(ns sprint-is.json-export)

(require [[noir.response :as response]])

(defn serialize [value] (response/json value))

它不会编译,因为noir.response并且response没有定义。

你应该有:

(ns sprint-is.json-export
   (:require [noir.response :as response]))

(defn serialize [value] (response/json value))

如果您坚持在宏require之外使用ns,您可以执行以下操作,但请注意这不是惯用的用法。

(ns sprint-is.json-export)

(require '[noir.response :as response])

(defn serialize [value] (response/json value))
于 2013-04-29T13:28:28.537 回答