2

webnoirが非推奨になったため、ドキュメントで説明されているようにフェッチから移行することにしましたが、何らかの理由で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 に 2 つの依存関係を追加することで、この問題を解決しました。

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