I am trying to learn clojure.spec
. While setting up a clojure project along boot build tool I am getting following error while requiring the clojure.spec.alpha.
Compiling ClojureScript...
• js/app.js
No such namespace: clojure.spec.alpha, could not locate clojure/spec/alpha.cljs, clojure/spec/alpha.cljc, or Closure namespace "clojure.spec.alpha" in f
ile src/cljs/flowparser/app.cljs
Elapsed time: 0.141 sec
My Boot Configuration is as follows:
(def +version+ "0.0.1-SNAPSHOT")
(def +description+ "Parses graph DSL for VADE")
(set-env!
:source-paths #{"src/cljs"}
:resource-paths #{"resources"}
:dependencies '[
[org.clojure/clojure "1.9.0-alpha16"]
[org.clojure/clojurescript "1.9.521"]
[org.clojure/core.async "0.3.442"]
[adzerk/boot-cljs "2.0.0" :scope "test"]
[adzerk/boot-cljs-repl "0.3.3" :scope "test"]
[adzerk/boot-reload "0.5.1" :scope "test"]
[pandeiro/boot-http "0.8.0" :scope "test"]
[com.cemerick/piggieback "0.2.1" :scope "test"]
[org.clojure/tools.nrepl "0.2.13" :scope "test"]
[weasel "0.7.0" :scope "test"]
[crisptrutski/boot-cljs-test "0.3.0" :scope "test"]
[binaryage/dirac "1.2.7" :scope "test"]
[powerlaces/boot-cljs-devtools "0.2.0" :scope "test"]
[proto-repl "0.3.1" :scope "test"]
[proto-repl-charts "0.3.2" :scope "test"]
[boot-codox "0.10.3" :scope "test"]
[adzerk/bootlaces "0.1.13"]])
(require
'[adzerk.boot-cljs :refer [cljs]]
'[adzerk.boot-cljs-repl :refer [cljs-repl start-repl]]
'[adzerk.boot-reload :refer [reload]]
'[pandeiro.boot-http :refer [serve]]
'[crisptrutski.boot-cljs-test :refer [test-cljs]]
'[powerlaces.boot-cljs-devtools :refer [cljs-devtools dirac]]
'[codox.boot :refer [codox]]
'[adzerk.bootlaces :refer :all])
(bootlaces! +version+ :dont-modify-paths? true)
(task-options!
pom {:project 'vadelabs/flowparser
:version +version+
:description +description+
:url "https://github.com/pntripathi9417/flowparser"
:scm {:url "https://github.com/pntripathi9417/flowparser"}
:license {"Eclipse Public License"
"http://www.eclipse.org/legal/epl-v10.html"}})
(deftask build []
(comp (speak)
(cljs)))
(deftask run []
(comp (serve)
(watch)
(cljs-repl)
(dirac)
(reload)
(build)
(target)))
(deftask production []
(task-options! cljs {:optimizations :advanced})
identity)
(deftask development []
(task-options! cljs {:optimizations :none}
reload {:on-jsload 'flowparser.app/init})
identity)
(deftask dev
"Simple alias to run application in development mode"
[]
(comp (development)
(run)))
(deftask docs []
"Generates documentation for the library"
(comp (codox
:name "vadelabs/flowparser"
:description +description+
:version +version+
:language :clojurescript
:output-path ".")
(target :dir #{"docs"})))
My Main app.cljs file is as follows:
(ns flowparser.app
(:require [clojure.spec.alpha :as spec]))
(defn init []
"Hello World")
As I am just starting out with clojure
any suggestions regarding these kind of issues would be greatly helpful.
Thanks
A namespace is both a name context and a container for vars. Namespace names are symbols where periods are used to separate namespace parts, such as clojure. string . By convention, namespace names are typically lower-case and use - to separate words, although this is not required.
spec is a Clojure library to describe the structure of data and functions. Specs can be used to validate data, conform (destructure) data, explain invalid data, generate examples that conform to the specs, and automatically use generative testing to test functions.
You're picking up spec at a particularly tricky moment. Clojure 1.9.0-alpha16 just changed namespaces from clojure.spec
to clojure.spec.alpha
.
ClojureScript has made the equivalent changes on master but a new version has not yet been released. So for ClojureScript <= 1.9.521, you'll need to instead use clojure.spec
as the namespace you require.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With