2013-02-25 10 views
5

Nowość w clojurescript i praca przy użyciu samouczka "Modern CLJS" here.Biblioteki Clojurescript - goog.require nie można znaleźć

To instruuje ciągnąć w domina dodając go do project.clj:

:dependencies [[org.clojure/clojure "1.4.0"] 
       [compojure "1.1.5"] 
       [domina "1.0.0"]] 

a następnie użyć go w skrypcie poprzez odniesienie go w formie ns

(ns cljstut.login 
    (:use [domina :only [by-id value]])) 

Jednak, kiedy rzeczywiście uruchom to w przeglądarce, widzę następujące w dzienniku konsoli.

goog.require could not find: domina 

Wydaje się jakbym brakuje jakiegoś oświadczenia gdzieś? Ale jako nowość cały ten proces budowy jest raczej nieprzejrzysty. Wszelkie wskazówki dotyczące rozwiązywania problemów są bardzo doceniane.

Odpowiedz

3

Zależności w pliku project.clj i deklaracje przestrzeni nazw wyglądają dobrze.

Jeśli budujesz swój kod clojurescript za pomocą lein cljsbuild auto, będziesz musiał ponownie uruchomić ten proces. Sądzę, że powinien automatycznie pobierać nowe zależności po ponownym uruchomieniu.

Jeśli to nie działa lub nie używasz lein cljsbuild auto, spróbuj ręcznie uruchomić komendę lein deps w folderze projektu - spowoduje to pobranie wszystkich brakujących zależności z odległych repozytoriów.

+1

mam właściwie tylko zdobyć przez to i myślę, że to mogła być domina 1.0.1, która to naprawiła? Coś na temat goog-słoika lub czegoś zależało w wersji 1.0.0 i już go nie bierze. Czy to wydaje się rozsądne? – BnWasteland

+0

Ach tak, to ma sens. Wierzę, że z 'domina 1.0.0' trzeba dodać wyraźną zależność od biblioteki zewnętrznej google clojure, aby wszystko działało. – mtyaka

+1

Restartowanie 'lein cljsbuild auto' zadziałało dla mnie dla podobnego błędu. – verma

1

Jestem w trakcie aktualizacji modern-cljs do najnowszych wersji używanych wtyczek libs i lein. W tej chwili zaktualizowałem serię do 7-tego tutoriala serii. Powinieneś być teraz bezpieczny, aktualizując program domina 1.0.2-SNAPSHOT do project.cljs: dependencies i do lein-cljsbuild 0.3.0 do project.cljs: plugins.

Mimmo

1

tylko dodać, że to literówka w przestrzeni nazw spowodowałby ten sam komunikat o błędzie:

goog.require nie mógł znaleźć: Domina

Przykład (uwaga brakujące "j" w modern-cljs):

(ns modern-cls.login 
    (:use [domina :only [by-id value]])) 

Użyłem inna nazwa projektu, a więc inna przestrzeń nazw, żeby być odważnym. on ugryzł mnie w tyłek, kiedy kopia wklejony z prowadnicy i błąd miał mnie zaskoczony przez jakiś czas :)

3

Ponadto, upewnij się, że zapisany plik project.clj i spróbuj uruchomić lein clean i lein cljsbuild clean.

0

Wpadłem na ten sam problem podczas pracy z samouczkiem "Modern CLJS". Mój problem polegał na nieumyślnym dodaniu zależności "domina" do sekcji: plugins projektu.clj, a nie do sekcji: dependencies.

0

Przeszłam ten komunikat o błędzie, umieszczając wiersze we właściwej kolejności w pliku index.html.

odpowiedniej kolejności:

<script src="js/expanding_gases.js" type="text/javascript"></script> 
<script type="text/javascript">goog.require("expanding_gases.flow_gases");</script> 

niewłaściwej kolejności:

<script type="text/javascript">goog.require("expanding_gases.flow_gases");</script> 
<script src="js/expanding_gases.js" type="text/javascript"></script> 

Przy okazji warto przeczytać o zrozumienie 'goog' wiadomości jest tutaj: https://github.com/clojure/clojurescript/wiki/Quick-Start