这是我的代码。
(use '[leiningen.exec :only (deps)])
(deps '[[org.clojure/clojure "1.4.0"]
[org.clojure/data.zip "0.1.1"]])
(deps '[[clj-http "0.5.8"]
[org.clojars.rorygibson/clj-amazon "0.3.0-SNAPSHOT"]]
)
(def ACCESS-KEY "my access key" )
(def SECRET-KEY "my secret key" )
(def ASSOCIATE-ID "my id")
(def ENDPOINT "webservices.amazon.co.uk")
(def signer (signed-request-helper ACCESS-KEY SECRETE-KEY ASSOCIATE-ID))
(def gibson-opus-search (item-search :signer signer :search-index "Books", :keywords "Neuromancer", :associate-tag ASSOCIATE-ID, :condition "New"))
(def lookup-specific-item (item-lookup :signer signer :associate-tag ASSOCIATE-ID :item-id "B0069KPSPC" :response-group "ItemAttributes,OfferSummary"))
我正在尝试在Clojure上使用亚马逊的产品API。当我在命令提示符下尝试lein exec时,我无法在此上下文中解析symbol:signed-request helper。我该如何解决这个问题?
答案 0 :(得分:2)
deps
调用设置类路径,以便您的依赖项可用。您需要require
命名空间才能加载它,然后refer
(在require
内)以使这些外部符号可用于您的代码。或者,您可以use
加载外部名称空间和refer
(尽管这些日子通常不鼓励这样做。)
在这个例子中:
(require '[clj-amazon.core :refer [signed-request-helper]]
'[clj-amazon.product-advertising :refer [item-search item-lookup])
或者:
(use 'clj-amazon.core
'clj-amazon.product-advertising)
通常首选require
版本,因为它可以直观地跟踪代码中使用的函数来自哪里。
答案 1 :(得分:1)
您永远不会在该上下文中定义signed-request-helper
,因此当然无法解析。您需要提供定义,或者如果它包含在其中一个依赖项中,则需要use
或require
相应的命名空间。