cljsbuild was on auto. After restarting cljsbuild it compiled just fine
clojurescript could not locate cljs.core.async.macros
-
03-07-2022 - |
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!
Solution 5
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