我正在和奎尔一起学习ClojureScript。当我试图在ClojureScript中实现这个Quil示例时,我得到了错误消息:No such namespace: quil.helpers.seqs
。
通过使用lein:lein new quil-cljs quil-helpers
创建一个新项目,并尝试使用core.cljs
文件中quil.helpers.seqs
的函数,可以重现该错误。
为什么我会出现此错误?
以下是core.cljs
文件,我试图在其中使用来自以下命名空间的函数:
(ns quil-helpers.core
(:require [quil.core :as q :include-macros true]
[quil.helpers.seqs :as s]
[quil.middleware :as m]))
(defn draw [state]
(s/range-incl 0 10)
(q/background 200)
(q/ellipse 200 200 100 100))
(defn ^:export run-sketch []
(q/defsketch quil-helpers
:host "quil-helpers"
:size [500 500]
:draw draw
:middleware [m/fun-mode]))
以下是lein:生成的project.clj文件
(defproject quil-helpers "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.10.1"]
[quil "3.1.0"]
[org.clojure/clojurescript "1.10.520"]]
:plugins [[lein-cljsbuild "1.1.7"]
[lein-figwheel "0.5.19"]]
:hooks [leiningen.cljsbuild]
:clean-targets ^{:protect false} ["resources/public/js"]
:cljsbuild
{:builds [; development build with figwheel hot swap
{:id "development"
:source-paths ["src"]
:figwheel true
:compiler
{:main "quil_helpers.core"
:output-to "resources/public/js/main.js"
:output-dir "resources/public/js/development"
:asset-path "js/development"}}
; minified and bundled build for deployment
{:id "optimized"
:source-paths ["src"]
:compiler
{:main "quil_helpers.core"
:output-to "resources/public/js/main.js"
:output-dir "resources/public/js/optimized"
:asset-path "js/optimized"
:optimizations :advanced}}]})
正如您在repo中所看到的,quil.helpers.seqs
是一个CLJ命名空间——您不能像在CLJS中那样使用它。但不知道为什么它是CLJ NS——似乎没有任何JVM特定的东西,所以也许创建一个特性请求是值得的。