gpt4 book ai didi

clojure - 如何在 ClojureScript 中使用 Spectre?

转载 作者:行者123 更新时间:2023-12-04 16:54:37 25 4
gpt4 key购买 nike

我正在努力在 cljs 中使用幽灵(0.12.0)。我可能没有正确设置 ns。

运行一个简单的示例,我收到以下错误消息:

=> (select [:a :b] {:a {:b 42}})
#object[TypeError TypeError: Cannot read property 'specter' of undefined]

我的 ns 看起来像这样:
(ns dummy.core
(:require [com.rpl.specter :as s])
(:require-macros [com.rpl.specter.macros :refer [select]]))

编辑

它实际上在浏览器中工作。

但它不在 figwheel 的 REPL 中,我自然而然地首先尝试了它。

我的 project.clj (为简洁起见略有缩短)
(defproject dummy "0.1.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.8.0" :scope "provided"]
[org.clojure/clojurescript "1.7.228" :scope "provided"]
[reagent "0.5.1"]
[com.rpl/specter "0.12.0"]]

:plugins [[lein-cljsbuild "1.1.1"]]
:min-lein-version "2.5.0"
:clean-targets ^{:protect false}
[:target-path
[:cljsbuild :builds :app :compiler :output-dir]
[:cljsbuild :builds :app :compiler :output-to]]

:resource-paths ["public"]

:cljsbuild {:builds {:app {:source-paths ["src"]
:figwheel {:on-jsload dummy.core/fig-reload}
:compiler {:main dummy.core
:output-to "public/js/app.js"
:output-dir "public/js/out"
:source-map-timestamp true
:asset-path "/js/out"
:optimizations :none
:pretty-print true}}

:min {:source-paths ["src"]
:compiler {:main dummy.core
:output-to "public/js/app.js"
:optimizations :whitespace}}}}

:figwheel { :http-server-root "public"
:server-port 3449
:nrepl-port 7002
:nrepl-middleware ["cemerick.piggieback/wrap-cljs-repl"]
:css-dirs ["public/css"]}

:profiles { :dev { :dependencies [[prone "1.0.2"]
[lein-doo "0.1.6"]
[pjstadig/humane-test-output "0.7.1"]
[lein-figwheel "0.5.0-6"]
[org.clojure/tools.nrepl "0.2.12"]
[com.cemerick/piggieback "0.2.1"]]

:plugins [[lein-figwheel "0.5.0-6"]
[lein-doo "0.1.6"]]

:doo {:build "test"}

:injections [(require 'pjstadig.humane-test-output)
(pjstadig.humane-test-output/activate!)]}})

最佳答案

FWIW 我在 Clojurescript 中使用 Spectre 时遇到了一些困难,但现在它似乎工作正常。道路颠簸是围绕着必须拉入两个命名空间并确定 Spectre 的哪一部分在哪个命名空间中。内森·马兹 (Nathan Marz) 曾表示他想 unify them eventually ,但在那之前我的命名空间看起来像这样:

(ns test.core
(:require [com.rpl.specter :as sp])
(:require-macros [com.rpl.specter.macros :refer [select setval] :as spm]))

所以,和你的不太一样!但至少看起来你可以排除你的命名空间定义。这对我来说在 figwheel 中也很好用,顺便说一句。我用过 Devcards通过 lein new devcards test 作为起点,并使用了 project.clj从那里。

关于clojure - 如何在 ClojureScript 中使用 Spectre?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39123457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com