Question

I have the following code in the file client.cljs :

(ns onn.client
    (:require [enfocus.core :as ef]
          [enfocus.effects :as effects]
          [enfocus.events :as events]
          [clojure.browser.repl :as repl]
          [goog.net.XhrIo :as xhr]
          [cljs.core.async :as async :refer [chan close!]])
    (:use-macros [enfocus.macros :only [deftemplate defsnippet defaction]])
    (:require-macros [cljs.core.async.macros :refer [go alt!]]
))
;....the actual code follows

The project file looks like this:

(defproject onn "DEV-SNAPSHOT"
  :description "FIXME: write this!"
  :url "http://exampl.com/FIXME"
  :dependencies [[org.clojure/clojure "1.5.1"]
             [ring/ring-core "1.1.8"]
             [ring/ring-jetty-adapter "1.1.8"]
             [org.clojure/clojurescript "0.0-1820"]
             [org.clojure/core.async "0.1.0-SNAPSHOT"]
             [enfocus "2.0.0-SNAPSHOT"]]
  :plugins [[lein-cljsbuild "0.3.2"]
            [lein-ring "0.8.3"]]
  :cljsbuild {:builds [{:source-paths ["src"],
                    :compiler {:pretty-print true,
                               :output-to "resources/public/js/main.js",
                               :warnings true,
                               :optimizations :whitespace}}]}
  :ring {:handler onn.server/app :port 3000})

...when compiled gives me this error:

Caused by: clojure.lang.ExceptionInfo: 
Could not locate cljs/core/async/macros__init.class or cljs/core/async/macros.clj 
on classpath:  at line 1 src/onn/client.cljs

Note that my code is copied from here: https://github.com/Dimagog/AsyncGET/blob/master/cljs/app.cljs This guy's project has the same dependencies and it works.

Any idea why? Thanks!

UPDATE: My cljsbuild was on auto. After restarting cljsbuild it compiles just fine. Thanks!

Was it helpful?

Solution 5

cljsbuild was on auto. After restarting cljsbuild it compiled just fine

OTHER TIPS

I got this error when I was (mistakenly) using :include-macros true in my require for cljs.core.async:

;; THROWS ERROR
(ns my-ns
  (:require [cljs.core.async :refer [<!] :include-macros true])
  (:require-macros [cljs.core.async.macros :refer [go]]))

Removing it worked:

;; DOES NOT THROW ERROR
(ns my-ns
  (:require [cljs.core.async :refer [<!]])
  (:require-macros [cljs.core.async.macros :refer [go]]))

Your project.clj file looks to be missing the repository that the AsyncGET project used.

:repositories { "sonatype-oss-public" "https://oss.sonatype.org/content/groups/public/" }

I have ran into this also. Running lein cljsbuild clean enabled cljsbuild to pull in the library and build successfully.

Only if your error is related with the brepl ...

If you are trying to use this code into the "standard" clojurescript brepl, first you need to evaluate the clojure macros code into the repl, and then the async macros will be available from the brepl. Also, You can try for interactive coding on the brepl the @cemerick/austin tool https://github.com/cemerick/austin

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top