我正在尝试重新实现todo example app以了解它是如何工作的,并且在加载页面时出现错误。我不确定怎么离开这里。我担心的是错误似乎出现在cljs.core
。
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"]]
任何帮助或见解都将不胜感激!
答案 0 :(得分:1)
我也看到了这个错误,似乎它突然冒出来了。清除out/
目录:target-path
中的project.clj
)会为我修复它。基于此,我认为cljs编译过程和/或基座有一些脱节。
This issue看起来很相似,修复方法类似,所以我认为这是一个cljs构建问题。
一般来说,关于基座调试,我没什么可提供的,但是如果我看到一个似乎在核心库中的错误,我会从假设我的结果出现问题开始。 :)
修改强>
更多信息,建议每次升级ClojureScript或Pedestal时删除out\
目录。
答案 1 :(得分:1)
正如bostonou建议的那样,最好的方法是删除out
目录。我目前的方法是使用lein-cljsbuild,我个人通过将其添加到我的用户个人资料中来做到这一点。
您可以致电nano ~/.lein/profiles.clj
{: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]}}
现在,您可以通过调用项目文件夹中的lein-cljsbuild once
来自动构建cljs文件。调用lein-cljsbuild auto
可确保在编辑源文件时自动编译它们。
我目前还在:hooks [leiningen.cljsbuild]
添加了project.clj
,因此调用lein clean
也会删除由lein-cljsbuild
构建的文件。