2016-12-05 2 views
0
  • clojure Version erfordern: 1.8.0
  • Leiningen Version: 2.7.1
  • jdk Version: 1.8.0_101

Wenn ich eine Bibliothek erfordern , sagen reagent im lein repl (hat sich in den Projektabhängigkeiten hinzugefügt):Kann nicht von Drittanbieter-Bibliothek in lein repl

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

der Ausgang gleich Null ist, was ich denke, es bedeutet Erfolg. Aber wenn ich die r verwenden, sagen (r/atom 3), die ers einen Fehler aus, sagt:

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) 

Das scheint seltsam. Hat jemand eine Idee?

Übrigens kann ich Java und Clojure-Bibliothek erfordern.

+3

Das Reagenz ist hauptsächlich eine ClojureScript-Bibliothek. Der Kernnamespace hat nur ein Dienstprogrammmakro. Führst du das von einer ClojureScript REPL aus? –

+0

Können Sie näher erläutern, was Sie mit 'wenn ich das r benutze '... WIE verwenden Sie es? Wenn Sie nur "r" eingeben und die Eingabetaste in der REPL drücken, wird dieser Fehler verursacht, da "r" kein Symbol ist. Sie müssen auf ein Symbol verweisen, wie zum Beispiel: '(r/my-function ...' Also, es ist schwer zu sagen, was Ihr Problem ist, ohne weitere Informationen. – Josh

+0

@MichielBorcent Ja, das ist ein Lob, ich könnte den Unterschied ignorieren von clojure REPL und clojurescript REPL .. – minddy

Antwort

1

Wahrscheinlich versuchen Sie ClojureScript Bibliothek: Reagenz innerhalb der Clojure REPL zu verwenden. Das Finden der Ursache für Fehler ist nicht so nützlich, da Clojure und ClojureScript in sehr unterschiedlichen Umgebungen, JVM bzw. JavaScript, ausgeführt werden sollen. Aber derselbe Versuch wird im ClojureScript-Kontext gelingen.

Erstellen Sie als Test ein ClojureScript-Projekt, das auf der figwheel-Vorlage basiert.

lein new figwheel rtest 
cd rtest 

Fügen Sie die Regent Abhängigkeit in project.clj

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

Führen Sie das Projekt

rlwrap lein figwheel 

Sie werden automatisch an den Browser ers angeschlossen werden. Andernfalls blättern Sie zu http://localhost:3449/index.html, um verbunden zu werden.

Jetzt können Sie erneut versuchen, was Sie getan haben.

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

Oh ja, es funktioniert .. Ich habe den Unterschied zwischen der Laufumgebung von Clojure und Clojurescript nicht klar verstanden. – minddy

Verwandte Themen