Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

clojurescript could not locate cljs.core.async.macros

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!

like image 306
vidi Avatar asked Nov 04 '13 14:11

vidi


1 Answers

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]]))
like image 72
Tim Gilbert Avatar answered Sep 16 '22 21:09

Tim Gilbert