This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-10-21
Channels
- # announcements (1)
- # aws (18)
- # babashka (5)
- # beginners (72)
- # biff (2)
- # calva (38)
- # cider (2)
- # clj-commons (6)
- # clj-yaml (2)
- # clojars (7)
- # clojure (41)
- # clojure-austin (5)
- # clojure-europe (78)
- # clojure-nl (1)
- # clojure-norway (18)
- # clojure-uk (3)
- # clojurescript (13)
- # component (9)
- # cursive (37)
- # datahike (3)
- # datomic (7)
- # fulcro (7)
- # graphql (3)
- # holy-lambda (2)
- # honeysql (8)
- # introduce-yourself (1)
- # jobs (1)
- # kaocha (1)
- # leiningen (19)
- # lsp (104)
- # malli (5)
- # nbb (8)
- # off-topic (60)
- # polylith (22)
- # portal (2)
- # reagent (24)
- # reveal (1)
- # shadow-cljs (126)
- # test-check (11)
- # tools-build (39)
- # vim (23)
- # xtdb (10)
running into TypeError: Cannot assign to read only property 'reagentRender' of object '#<Object>'
when calling reagent.core/set-default-compiler!
in node from an esm module build. Full trace in ๐งต Anybody know how else I should set this?
this is my call, it works if I take it out
(reagent.core/set-default-compiler!
(reagent.core/create-compiler {:function-components true}))
node ssr.js
file:///Users/mk/dev/clerk/public/js/cljs-runtime/reagent.impl.component.js:640
(c.reagentRender = f__$1);
^
TypeError: Cannot assign to read only property 'reagentRender' of object '#<Object>'
at Object.reagent$impl$component$functional_wrap_render [as functional_wrap_render] (file:///Users/mk/dev/clerk/public/js/cljs-runtime/reagent.impl.component.js:640:18)
at Object.reagent$impl$component$functional_do_render [as functional_do_render] (file:///Users/mk/dev/clerk/public/js/cljs-runtime/reagent.impl.component.js:660:35)
at Object.reagent$impl$component$functional_render [as functional_render] (file:///Users/mk/dev/clerk/public/js/cljs-runtime/reagent.impl.component.js:665:31)
at nextjournal.clerk.sci_viewer.error_boundary (file:///Users/mk/dev/clerk/public/js/cljs-runtime/reagent.impl.component.js:739:31)
at processChild (file:///Users/mk/dev/clerk/public/js/cljs-runtime/module$node_modules$react_dom$cjs$react_dom_server_browser_development.js:46:378)
at resolve (file:///Users/mk/dev/clerk/public/js/cljs-runtime/module$node_modules$react_dom$cjs$react_dom_server_browser_development.js:53:91)
at _proto.render (file:///Users/mk/dev/clerk/public/js/cljs-runtime/module$node_modules$react_dom$cjs$react_dom_server_browser_development.js:123:484)
at _proto.read (file:///Users/mk/dev/clerk/public/js/cljs-runtime/module$node_modules$react_dom$cjs$react_dom_server_browser_development.js:122:192)
at exports.renderToString (file:///Users/mk/dev/clerk/public/js/cljs-runtime/module$node_modules$react_dom$cjs$react_dom_server_browser_development.js:148:504)
at Function.cljs$core$IFn$_invoke$arity$2 (file:///Users/mk/dev/clerk/public/js/cljs-runtime/reagent.dom.server.js:35:57)
Node.js v18.11.0
ah, still have a class-component here, is that the issue?
(defn error-boundary [!error & _]
(r/create-class
{:constructor (fn [_ _])
:component-did-catch (fn [_ e _info] (reset! !error e))
:get-derived-state-from-error (fn [e] (reset! !error e) #js {})
:reagent-render (fn [_error & children]
(if-let [error @!error]
(error-view error)
[view-context/provide {:!error !error}
(into [:<>] children)]))}))
do you have babashka installed? If yes, do:
git clone ; cd clerk; git checkout esm-target; bb dev
then take out the when https://github.com/nextjournal/clerk/blob/0007ee584834f6b45361ba005357e635dc1b563d/src/nextjournal/clerk/sci_viewer.cljs#L36 and run it again to see it fail
I meant the ssr.js
script. Although no clue whether it's possible to run it in a browser at all.
Trying to run it in a regular way but using a source dep (without an explicit dep on clerk) and getting ReferenceError: nextjournal is not defined
in the browser.
Debugged it for a bit. Seems like Reagent has some hacks for its function components to work, but those have a blindspot of rendering to string + class components. Created https://github.com/reagent-project/reagent/issues/581
Are there any docs or blog posts on how reagent works under the hood?