2016-12-05 1 views
0
  • version clojure: 1.8.0
  • version Leiningen: 2.7.1
  • version jdk: 1.8.0_101

Quand je requiers une bibliothèque , par exemple reagent (a ajouté dans les dépendances du projet), dans le lein rempl:ne peut exiger la bibliothèque tiers dans lein rempl

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

la sortie est nul, que je pense que cela signifie succès. Mais quand je l'utilise r, dire (r/atom 3), le rempl jeter une erreur dit:

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) 

Cela semble étrange. Quelqu'un a une idée? Par ailleurs, je peux exiger une bibliothèque java et clojure.

+3

Le réactif est principalement une bibliothèque ClojureScript. L'espace de noms principal possède uniquement une macro d'utilitaire. Courez-vous ceci à partir d'un REPL ClojureScript? –

+0

Pouvez-vous préciser ce que vous entendez par «quand j'utilise le r» ... COMMENT l'utilisez-vous? Le simple fait de taper 'r' et d'appuyer sur la touche Entrée dans REPL provoquera cette erreur, car' r' n'est pas un symbole. Vous devez vous référer à un symbole, comme: '(r/ma-fonction ...' Donc, il est difficile de dire quel est votre problème sans plus d'informations – Josh

+0

@MichielBorkent Oui, c'est un embrassement, je pourrais ignorer la différence de clojure REPL et clojurescript REPL .. – minddy

Répondre

1

Vous essayez probablement d'utiliser la bibliothèque ClojureScript: réactif dans le REPL de Clojure. Trouver la cause de l'erreur n'est pas très utile puisque Clojure et ClojureScript sont supposés fonctionner dans des environnements très différents, JVM et JavaScript respectivement. Mais la même tentative réussira dans le contexte de ClojureScript.

À titre de test, créez un projet ClojureScript basé sur le modèle figwheel.

lein new figwheel rtest 
cd rtest 

Ajouter la dépendance à régente project.clj

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

Exécutez le projet

rlwrap lein figwheel 

Vous serez connecté à la rempl du navigateur automatiquement. Sinon, naviguez jusqu'à http://localhost:3449/index.html pour vous connecter.

Maintenant, vous pouvez réessayer ce que vous avez fait.

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

Oh oui ça marche, je n'ai pas bien compris la différence entre l'environnement run de clojure et clojurescript. – minddy