[英]Clojure : missing namespace errors when running “use” at the REPL
我有一個.clj文件,它的開頭是這樣的:
(ns clojure_crawl.core)
(require '[clj-http.client :as client])
(use 'clojure.contrib.json)
隨后是幾個函數定義:
(defn f1 [] "" (+ 1 1))
(defn f2 [] "" (+ 2 2))
等等...
但是,當我運行命令“(使用'myfile.core:reload)”時
我的某些功能盡管在REPL上可見,但無法運行以解決“缺少名稱空間”錯誤。
如何添加依賴項,以便REPL可以運行文件中定義的任何功能?
如果您的代碼位於“ clojure_crawl / core.clj”中,則其命名空間應為clojure-crawl.core(注意連字符)。 參見http://clojure.org/libs
如Joost所說,您必須注意連字符和下划線:無論您在名稱空間名稱中使用連字符,都應在相應的文件/目錄名稱中用下划線替換(反之亦然)。
另外,不建議在clj源文件中use
require
和use
函數。 而是直接在ns
宏中聲明所需的庫:
(ns clojure-crawl.core
(:require [clj-http.client :as client])
(:use clojure.contrib.json))
這也負擔了正確引用您所需的名稱空間的負擔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.