2

随着 webnoir 被弃用,我决定按照docs中的描述从 fetch 迁移,但由于某种原因,shoreleave.remotes 没有被编译为 Js,因此我得到了

goog.require could not find: shoreleave.remotes.http_rpc

我已经尝试过 remote-callback 和 remotes.macros。我的 ClojureScript 命名空间是这样的

(ns my.cljs.ns 
(:require [shoreleave.remotes.http-rpc :as rpc])
  (:require-macros [shoreleave.remotes.macros :as fm])

和后端

(ns my.backend
  (:use my.views
  (:require [compojure.route :as route]
        [compojure.handler :as handler]
        [cemerick.shoreleave.rpc :as rpc]))

 )

(rpc/defremote get-data [last-changed] 
  [:foo]
)

(defroutes my-routes
  (GET "/" [] (intro-view))
  (route/files "/" {:root "resources/public"})
  (route/not-found "<h1>Page not found</h1>"))


(def my-routing (-> #'my-routes
                   rpc/wrap-rpc
                   handler/site))

任何想法如何让它工作?

更新:我发现出于某种原因 goog.require('shoreleave.remotes.http_rpc') 在 goog.provide('shoreleave.remotes.http_rpc') 之前

4

2 回答 2

1

这是 lein 中增量编译的问题(请参阅错误CLJS-282),在 project.clj 中添加 ':incremental false' 解决了我的问题:

:cljsbuild {
  :builds [{
    :incremental false
    :jar true
    :source-path "src-cljs"
    :compiler {
        :output-to "resources/public/js/js.js"
        :optimizations :whitespace
        :pretty-print true}
}]}
于 2013-01-14T13:19:46.520 回答
0

我刚刚通过在 project.clj 中添加两个依赖项解决了这个问题。

[shoreleave "0.3.0"]
[shoreleave/shoreleave-remote "0.3.0"]
于 2013-09-22T14:28:39.880 回答