我目前正在尝试重新实现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"]]任何帮助或见解都将不胜感激!
发布于 2013-07-17 03:01:25
我也看到了这个错误,它似乎是从哪里冒出来的。清除out/目录(project.clj中的:target-path)为我解决了这个问题。基于此,我认为cljs编译过程和/或基座之间存在一些脱节。
This issue看起来很相似,修复方法也很相似,所以我认为这是一个cljs构建问题。
一般来说,我没有太多关于基座调试的东西可以提供,但是如果我在核心库中看到一个错误,我会从我这一端出了问题的假设开始。:)
编辑
更多信息,建议您在每次升级ClojureScript或out\时删除ClojureScript目录。
发布于 2013-08-22 21:08:31
按照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构建的文件。
https://stackoverflow.com/questions/17229437
复制相似问题