2013-06-21 3 views
4

В настоящее время я пытаюсь переопределить todo example app, чтобы понять, как это работает, и я получаю сообщение об ошибке при загрузке страницы. Я не уверен, как идти отсюда. Меня беспокоит, что ошибка находится в cljs.core.Каков правильный подход к отладке приложения pedestal.io?

todo-app.simulated.services.receive_messages = (function receive_messages(app){ 
    return io.pedestal.app.protocols.put_message.call(null,(new cljs.core.Keyword("\uFDD0:input")).call(null,app),cljs.core.PersistentArrayMap.fromArray([io.pedestal.app.messages.type,"\uFDD0:create-todo",io.pedestal.app.messages.topic,cljs.core.PersistentVector.fromArray(["\uFDD0:todo"], true)], true)); 
}); 

Сообщение Исключение:

Uncaught TypeError: Object function (meta,cnt,arr,__hash){ 
this.meta = meta; 
this.cnt = cnt; 
this.arr = arr; 
this.__hash = __hash; 
this.cljs$lang$protocol_mask$partition1$ = 4; 
this.cljs$lang$protocol_mask$partition0$ = 16123663; 
} has no method 'fromArray' 

И мои зависимостей:

[[org.clojure/clojure "1.5.1"] 
[org.clojure/clojurescript "0.0-1820"] 
[domina "1.0.1"] 
[ch.qos.logback/logback-classic "1.0.7" :exclusions [org.slf4j/slf4j-api]] 
[io.pedestal/pedestal.app "0.1.9"] 
[io.pedestal/pedestal.app-tools "0.1.9"]] 

Любая помощь или проницательность была бы оценена!

ответ

1

Я тоже видел эту ошибку, и казалось, что она вышла из ниоткуда. Очистка out/ dir (:target-path в вашем project.clj) исправила его для меня. Исходя из этого, я думаю, что в процессе компиляции cljs и/или пьедестале было некоторое разъединение.

This issue выглядит аналогичным, и исправление было похоже, поэтому я предполагаю, что это проблема сборки cljs.

У меня не так много предложений относительно отладки пьедестала вообще, но если я вижу ошибку, которая, как представляется, находится в основной библиотеке, я исхожу из предположения, что что-то не так на моем конце. :)

EDIT

Немного больше информации, рекомендуется удалить out\ Dir каждый раз при обновлении ClojureScript или пьедестал.

1

Как предлагалось bostonou, то лучший способ - удалить каталог out. Мой текущий подход заключается в использовании lein-cljsbuild, я лично делаю это, добавляя его в свой профиль пользователя.

Вы можете сделать это по телефону nano ~/.lein/profiles.clj

Mine в настоящее время выглядит следующим образом:

{:user {:plugins [[lein-difftest "2.0.0"] 
        [lein-marginalia "0.7.1"] 
        [lein-pprint "1.1.1"] 
        [lein-swank "1.4.4"] 
        [lein-catnip "0.5.1"] 
        [environ/environ.lein "0.3.0"] 
        [lein-cljsbuild "0.3.2"]] 
     :hooks [environ.leiningen.hooks]}} 

Теперь Вы можете автоматически создавать cljs файлы, вызвав lein-cljsbuild once в папке проекта. Вызов lein-cljsbuild auto гарантирует, что при редактировании исходных файлов они автоматически скомпилируются.

Я также в настоящее время добавить :hooks [leiningen.cljsbuild] к моему project.clj так, что вызов lein clean будет также удалять файлы, построенные lein-cljsbuild.

 Смежные вопросы

  • Нет связанных вопросов^_^