Почему figwheel не передает скомпилированное приложение в браузер?

Я использую Leiningen 2.5.2 (Java 1.8.0_45-внутренняя 64-разрядная версия Open JDK) и шаблон реагента (т.е. lein new reagent foo).

Это работает нормально с lein figwheel, как и ожидалось.

Далее, первое, что я делаю, это разбиваю функции «Представления» на отдельные файлы и добавляю их в пространство имен приложения:

Фрагмент core.cljs:

;; -------------------------
;; Views

(:require home-page)

home-page.cljs (весь файл):

(ns foo.core)

(defn home-page []
  [:div [:h2 "Welcome to foo"]
   [:div [:a {:href "#/about"} "go to about page"]]])

Когда я перехожу к просмотру приложения в браузере (Chromium или Firefox), оно зависает на «ClojureScript не был скомпилирован!» несмотря на успешную компиляцию в терминале. Если я ввожу команды в figwheel REPL, я вижу зеленый логотип Clojure, когда он работает в браузере, поэтому я знаю, что он подключен.

У меня это работало в приложении для реагентов несколько месяцев назад — что случилось? Как следует отделить код представления? (Один файл неуправляем; это много Иккинга.)


person bright-star    schedule 21.09.2015    source источник


Ответы (1)


Если у вас действительно есть только строка (:require home-page) в core.cljs, это должно быть виновником. Обозначение двоеточия :require допустимо только внутри объявления пространства имен с ns. Кроме того, вы объявляете основное пространство имен в неправильном файле (home-page.cljs, а не core.cljs). Взгляните на эту статью о пространствах имен в Clojure для подробного объяснения.

Вам понадобится следующее в core.cljs:

(ns foo.core
  (:require [foo.home-page :as hp :refer [home-page]]))
.... more core.cljs code ...

а затем просто в home-page.cljs:

(ns foo.home-page
  (:require ....reagent namespaces as needed ....

(defn home-page [] ....
person schaueho    schedule 22.09.2015
comment
Кажется, что :refer :all больше невозможно: stackoverflow.com/questions/24463469/ - person bright-star; 22.09.2015
comment
Ты прав, извини. Я обновил код соответственно. - person schaueho; 22.09.2015