Fork me on GitHub

A recently-created alternative can be used to put a thin recursive cljs.core/ILookup wrapper around JavaScript objects, making for more familiar / idiomatic use than getValueByKeys for nested access:

(get-in (->clj ui/Responsive) [:onlyMobile :maxWidth])

👍 4
Roman Liutikov10:07:46

@mfikes Is there anything we should be aware of when using cljs-bean? For example to not mutate passed JS object, etc.


IIUC it clones the underlying object when you change it via the implemented interfaces (e.g. assoc)


Yeah, you should not mutate passed objects or arrays. It is true that it also doesn't mutate passed object or arrays.


I am currently trying to go through the modern-CLJS tutorials, and figured I might try and set up the boot-environment the author suggests - it works fine so far. One thing that irritates me though: both boot repl -c and CIDER weasel connect seem to reload code on saving files (via boot-reload), but complain about usage of undeclared symbols in the namespace I'm in.

boot serve -d target watch reload cljs-repl cljs target
is the boot-command, I went into my namespace with (in-ns and namespace-file is just one defn. I have the feeling understanding this might be quite important, so I figured I should ask


IIUC it clones the underlying object when you change it via the implemented interfaces (e.g. assoc)


tried to run clojurescript tests against quickjs and it fails with > SyntaxError: functions can only be labelled inside blocks > at builds/out-adv/core-advanced-test.js:183


hello! does anyone know how to get this to work? * Start Figwheel somewhere * Open a browser session for that Figwheel instance * Connect Cursive to the browser session’s ClojureScript REPL


yes, but i dont want to run figwheel in Cursive, i want to run it with ‘lein build-dev’




When I start my Figwheel REPL, it outputs a log message “Starting nREPL server on port: 7002” — do you get a message like that?


yup. here is what i tried I tried starting Remote Repl in Cursive, switching it to CLJS, then running (figwheel.main.api/cljs-repl "dev") i get the following output

Connecting to remote nREPL server...
Clojure 1.10.1
(figwheel.main.api/cljs-repl "dev")
Prompt will show when REPL connects to evaluation environment (i.e. a REPL hosting webpage)
Figwheel Main Controls:
          (figwheel.main/stop-builds id ...)  ;; stops Figwheel autobuilder for ids
          (figwheel.main/start-builds id ...) ;; starts autobuilder focused on ids
          (figwheel.main/reset)               ;; stops, cleans, reloads config, and starts autobuilder
          (figwheel.main/build-once id ...)   ;; builds source one time
          (figwheel.main/clean id ...)        ;; deletes compiled cljs target files
          (figwheel.main/status)              ;; displays current state of system
Figwheel REPL Controls:
          (figwheel.repl/conns)               ;; displays the current connections
          (figwheel.repl/focus session-name)  ;; choose which session name to focus on
In the cljs.user ns, controls can be called without ns ie. (conns) instead of (figwheel.repl/conns)
    Docs: (doc function-name-here)
    Exit: :cljs/quit
 Results: Stored in vars *1, *2, *3, *e holds last exception object
Execution error (ExceptionInfo) at figwheel.main/nrepl-repl (main.cljc:1525).
Failed to launch Figwheel CLJS REPL: nREPL connection found but unable to load piggieback.
This is commonly caused by
 A) not providing piggieback as a dependency and/or
 B) not adding piggieback middleware into your nrepl middleware chain.
Please see the documentation for piggieback here 

Note: Cider will inject this config into your project.clj.
This can cause confusion when your are not using Cider.
I do have piggieback dependency in my “dev” profile in project.clj and :repl-options {:nrepl-middleware [cider.piggieback/wrap-cljs-repl]}


(ugh i meant to ask this question in #cursive and somehow failed 🙂 )