2016-12-05 64 views
0
  • Clojure的版本:1.8.0
  • leiningen版本:2.7.1
  • JDK版本:1.8.0_101

当我需要一个库,说reagent(在项目的依赖增加了),在雷音REPL:不能要求雷音REPL第三方库

user=> (require '[reagent.core :as r]) 
nil 

输出是零,我认为这意味着成功。但是,当我使用r,说(r/atom 3),在REPL抛出一个错误说:

CompilerException java.lang.RuntimeException: Unable to resolve symbol: r in 
this context, compiling: (/private/var/folders/_y/n3ym4ftj2ld9tl471g_kcv_00000gn/T 
/form-init1002540725014588615.clj:1:4923) 

这似乎很奇怪。 任何人有一些想法?

顺便说一句,我可以要求java和clojure库。

+3

试剂主要是ClojureScript库。核心命名空间只有一个实用程序宏。你是从ClojureScript REPL运行的吗? –

+0

您可以详细说明我在使用r时的含义......您如何使用它?只要输入'r'并按下REPL中的回车键就会导致这个错误,因为'r'不是一个符号。你需要引用一个符号,例如:'(r/my-function ...'所以,没有进一步的信息很难说你的问题是什么。 – Josh

+0

@MichielBorkent是的,这是一种尴尬,我可能会忽略它的差异clojure REPL和clojurescript REPL .. – minddy

回答

1

可能您正在尝试使用ClojureScript库:Clojure REPL中的试剂。找到导致错误的原因并不是很有用,因为Clojure和ClojureScript分别假设在非常不同的环境中运行,分别是JVM和JavaScript。但是相同的尝试会在ClojureScript上下文中成功。

作为一个测试,创建一个基于figwheel模板的ClojureScript项目。

lein new figwheel rtest 
cd rtest 

添加摄政依赖于project.clj

:dependencies [[org.clojure/clojure "1.8.0"] 
       [reagent "0.6.0"] ; only add this line 

运行时将自动连接到浏览器REPL项目

rlwrap lein figwheel 

。否则浏览到http://localhost:3449/index.html以建立连接。

现在你可以重试你做了什么。

cljs.user=> (require '[reagent.core :as r]) 
nil 
cljs.user=> (type r/render-component) 
#object[Function "function Function() { [native code] }"] 
+0

哦,是的,它的工作原理我没有清楚地了解clojure和clojurescript的运行环境的区别。 – minddy