@icooft

В чем причина ошибки при компиляции clojurescript?

Следую этому туториалу https://www.codementor.io/reactjs/tutorial/build-s... . Компиляция clojurescript падает на файле out/om_tools/dom.cljs . Ошибка:
Don't know how to create ISeq from: clojure.lang.Symbol at line 1 {:tag :cljs/analysis-error, :file nil, :line 1, :column 1}


Подскажите, пожалуйста, что я делаю не так.

project.clj
(defproject spa-tutorial "0.1.0-SNAPSHOT"
  :description "FIXME: write this!"
  :url "http://example.com/FIXME"
  :dependencies [[org.clojure/clojure "1.6.0"]
                 [org.clojure/clojurescript "0.0-2755"]
                 [org.clojure/core.async "0.1.346.0-17112a-alpha"]
                 [org.omcljs/om "0.8.8"]
                 [prismatic/om-tools "0.3.11"]
                 [http-kit "2.1.19"]
                 [secretary "1.2.3"]]
  :plugins [[lein-cljsbuild "1.0.5"]]
  :source-paths ["src" "target/classes"]
  :clean-targets ["out/spa_tutorial" "out/spa_tutorial.js"]
  :cljsbuild {
    :builds [{:id "spa-tutorial"
              :source-paths ["src"]
              :compiler {
                :main spa-tutorial.core
                :output-to "out/spa_tutorial.js"
                :output-dir "out"
                :optimizations :none
                :verbose true}}]})

core.cljs
(ns spa-tutorial.core

  (:require [om.core :as om :include-macros true]
            [om-tools.dom :as dom :include-macros true]
            [om-tools.core :refer-macros [defcomponent]]
            [secretary.core :as sec :include-macros true]
            [goog.events :as events]
            [goog.history.EventType :as EventType])

(enable-console-print!)

(def app-state (atom {:text "Hello world!"}))

(om/root
  (fn [app owner]
    (reify om/IRender
      (render [_]
        (dom/h1 nil (:text app)))))
  app-state
  {:target (. js/document (getElementById "app"))})

stacktrace

Compiling "out/spa_tutorial.js" failed.
clojure.lang.ExceptionInfo: failed compiling file:out/om_tools/dom.cljs {:file #}
at clojure.core$ex_info.invoke(core.clj:4403)
at cljs.compiler$compile_file.invoke(compiler.clj:1050)
at cljs.closure$compile_file.invoke(closure.clj:343)
at cljs.closure$eval3178$fn__3179.invoke(closure.clj:394)
at cljs.closure$eval3114$fn__3115$G__3105__3122.invoke(closure.clj:301)
at cljs.closure$compile_from_jar.invoke(closure.clj:386)
at cljs.closure$eval3173$fn__3174.invoke(closure.clj:400)
at cljs.closure$eval3114$fn__3115$G__3105__3122.invoke(closure.clj:301)
at cljs.closure$get_compiled_cljs.invoke(closure.clj:463)
at cljs.closure$cljs_dependencies.invoke(closure.clj:507)
at cljs.closure$add_dependencies.doInvoke(closure.clj:529)
at clojure.lang.RestFn.applyTo(RestFn.java:139)
at clojure.core$apply.invoke(core.clj:626)
at cljs.closure$build.invoke(closure.clj:1081)
at cljs.closure$build.invoke(closure.clj:1020)
at cljsbuild.compiler$compile_cljs$fn__3416.invoke(compiler.clj:81)
at cljsbuild.compiler$compile_cljs.invoke(compiler.clj:80)
at cljsbuild.compiler$run_compiler.invoke(compiler.clj:180)
at user$eval3548$iter__3584__3588$fn__3589$fn__3607.invoke(form-init73871114679044336.clj:1)
at user$eval3548$iter__3584__3588$fn__3589.invoke(form-init73871114679044336.clj:1)
at clojure.lang.LazySeq.sval(LazySeq.java:40)
at clojure.lang.LazySeq.seq(LazySeq.java:49)
at clojure.lang.RT.seq(RT.java:484)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core$dorun.invoke(core.clj:2855)
at clojure.core$doall.invoke(core.clj:2871)
at user$eval3548.invoke(form-init73871114679044336.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:6703)
at clojure.lang.Compiler.eval(Compiler.java:6693)
at clojure.lang.Compiler.load(Compiler.java:7130)
at clojure.lang.Compiler.loadFile(Compiler.java:7086)
at clojure.main$load_script.invoke(main.clj:274)
at clojure.main$init_opt.invoke(main.clj:279)
at clojure.main$initialize.invoke(main.clj:307)
at clojure.main$null_opt.invoke(main.clj:342)
at clojure.main$main.doInvoke(main.clj:420)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: clojure.lang.ExceptionInfo: Don't know how to create ISeq from: clojure.lang.Symbol at line 1 {:tag :cljs/analysis-error, :file nil, :line 1, :column 1}
at clojure.core$ex_info.invoke(core.clj:4403)
at cljs.analyzer$error.invoke(analyzer.clj:299)
at cljs.analyzer$analyze_seq.invoke(analyzer.clj:1634)
at cljs.analyzer$analyze$fn__1802.invoke(analyzer.clj:1723)
at cljs.analyzer$analyze.invoke(analyzer.clj:1716)
at cljs.analyzer$parse_ns$fn__1819$fn__1824.invoke(analyzer.clj:1801)
at cljs.analyzer$parse_ns$fn__1819.invoke(analyzer.clj:1801)
at cljs.analyzer$parse_ns.invoke(analyzer.clj:1789)
at cljs.compiler$compile_file.invoke(compiler.clj:1032)
... 39 more
Caused by: java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.Symbol
at clojure.lang.RT.seqFrom(RT.java:505)
at clojure.lang.RT.seq(RT.java:486)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core$map$fn__4245.invoke(core.clj:2551)
at clojure.lang.LazySeq.sval(LazySeq.java:40)
at clojure.lang.LazySeq.seq(LazySeq.java:49)
at clojure.lang.RT.seq(RT.java:484)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core$some.invoke(core.clj:2514)
at cljs.analyzer$desugar_ns_specs$remove_from_spec__1553.invoke(analyzer.clj:1242)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invoke(core.clj:626)
at clojure.core$partial$fn__4228.doInvoke(core.clj:2468)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$map$fn__4245.invoke(core.clj:2557)
at clojure.lang.LazySeq.sval(LazySeq.java:40)
at clojure.lang.LazySeq.seq(LazySeq.java:49)
at clojure.lang.Cons.next(Cons.java:39)
at clojure.lang.RT.nthFrom(RT.java:850)
at clojure.lang.RT.nth(RT.java:807)
at cljs.analyzer$parse_ns_excludes$fn__1510.invoke(analyzer.clj:1158)
at clojure.core.protocols$fn__6086.invoke(protocols.clj:143)
at clojure.core.protocols$fn__6057$G__6052__6066.invoke(protocols.clj:19)
at clojure.core.protocols$seq_reduce.invoke(protocols.clj:31)
at clojure.core.protocols$fn__6078.invoke(protocols.clj:54)
at clojure.core.protocols$fn__6031$G__6026__6044.invoke(protocols.clj:13)
at clojure.core$reduce.invoke(core.clj:6289)
at cljs.analyzer$parse_ns_excludes.invoke(analyzer.clj:1157)
at cljs.analyzer$eval1573$fn__1575.invoke(analyzer.clj:1271)
at clojure.lang.MultiFn.invoke(MultiFn.java:249)
at cljs.analyzer$analyze_seq.invoke(analyzer.clj:1636)
... 45 more
  • Вопрос задан
  • 231 просмотр
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Clojure
Седой и строгий
У макроса ns пропущена закрывающая скобка. И приведите версии зависимостей к актуальным:
(defproject spa-tutorial "0.1.0-SNAPSHOT"
  :description "FIXME: write this!"
  :url "http://example.com/FIXME"

  :dependencies [[org.clojure/clojure "1.8.0"]
                 [org.clojure/clojurescript "1.9.521"]
                 [org.clojure/core.async "0.3.442"]
                 [org.omcljs/om "0.9.0"]
                 [prismatic/om-tools "0.4.0"]
                 [http-kit "2.3.0-alpha2"]
                 [secretary "1.2.3"]]

  :plugins [[lein-cljsbuild "1.1.6"]]

  :source-paths ["src" "target/classes"]

  :clean-targets ["out/spa_tutorial" "out/spa_tutorial.js"]

  :cljsbuild {
    :builds [{:id "spa-tutorial"
              :source-paths ["src"]
              :compiler {
                :main spa-tutorial.core
                :output-to "out/spa_tutorial.js"
                :output-dir "out"
                :optimizations :none
                :verbose true}}]})

Проверил у себя, трансляция проходит нормально.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы