This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-12-13
Channels
- # adventofcode (51)
- # announcements (1)
- # babashka (7)
- # beginners (45)
- # berlin (2)
- # bristol-clojurians (1)
- # calva (38)
- # cider (2)
- # clara (25)
- # clj-kondo (2)
- # cljs-dev (25)
- # cljsrn (3)
- # clojure (112)
- # clojure-dev (6)
- # clojure-europe (5)
- # clojure-nl (1)
- # clojure-spec (15)
- # clojure-uk (93)
- # clojurescript (29)
- # clojutre (2)
- # core-async (78)
- # cursive (24)
- # datomic (29)
- # figwheel-main (1)
- # fulcro (50)
- # hugsql (1)
- # hyperfiddle (1)
- # luminus (1)
- # malli (26)
- # off-topic (40)
- # portkey (12)
- # reagent (22)
- # ring-swagger (1)
- # shadow-cljs (56)
- # spacemacs (24)
- # tools-deps (68)
can I only reference javascript packages in cljs? if so, how woould I go about referencing a js package in a macro?
Macros are pure CLJ. You can't directly use the JS code on the macro, but you can spit the CLJS code that will use it. (e.g. if your macro is spitting some code as in (react/createElement foo)
, the CLJS file that uses it must require react
)
hello, I'm trying to port some old project from figwheel to shadow, but for some reason I'm getting this when I try to compile:
Caused by: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)V
at com.google.javascript.rhino.IR.name(IR.java:381)
I check closure version, seems correct (coming from Shadow)
full error stack:
Exception in thread "main" Syntax error compiling at (shadow/cljs/devtools/api.clj:1:1).
at clojure.lang.Compiler.load(Compiler.java:7647)
at clojure.lang.RT.loadResourceScript(RT.java:381)
at clojure.lang.RT.loadResourceScript(RT.java:372)
at clojure.lang.RT.load(RT.java:463)
at clojure.lang.RT.load(RT.java:428)
at clojure.core$load$fn__6824.invoke(core.clj:6126)
at clojure.core$load.invokeStatic(core.clj:6125)
at clojure.core$load.doInvoke(core.clj:6109)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5908)
at clojure.core$load_one.invoke(core.clj:5903)
at clojure.core$load_lib$fn__6765.invoke(core.clj:5948)
at clojure.core$load_lib.invokeStatic(core.clj:5947)
at clojure.core$load_lib.doInvoke(core.clj:5928)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$load_libs.invokeStatic(core.clj:5985)
at clojure.core$load_libs.doInvoke(core.clj:5969)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$require.invokeStatic(core.clj:6007)
at clojure.core$require.doInvoke(core.clj:6007)
at clojure.lang.RestFn.invoke(RestFn.java:1523)
at shadow.cljs.devtools.cli$eval1826$loading__6706__auto____1827.invoke(cli.clj:1)
at shadow.cljs.devtools.cli$eval1826.invokeStatic(cli.clj:1)
at shadow.cljs.devtools.cli$eval1826.invoke(cli.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7176)
at clojure.lang.Compiler.eval(Compiler.java:7165)
at clojure.lang.Compiler.load(Compiler.java:7635)
at clojure.lang.RT.loadResourceScript(RT.java:381)
at clojure.lang.RT.loadResourceScript(RT.java:372)
at clojure.lang.RT.load(RT.java:463)
at clojure.lang.RT.load(RT.java:428)
at clojure.core$load$fn__6824.invoke(core.clj:6126)
at clojure.core$load.invokeStatic(core.clj:6125)
at clojure.core$load.doInvoke(core.clj:6109)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5908)
at clojure.core$load_one.invoke(core.clj:5903)
at clojure.core$load_lib$fn__6765.invoke(core.clj:5948)
at clojure.core$load_lib.invokeStatic(core.clj:5947)
at clojure.core$load_lib.doInvoke(core.clj:5928)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$load_libs.invokeStatic(core.clj:5985)
at clojure.core$load_libs.doInvoke(core.clj:5969)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$require.invokeStatic(core.clj:6007)
at clojure.core$require.doInvoke(core.clj:6007)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at user$eval1809$fn__1813.invoke(form-init1501309315939750065.clj:1)
at user$eval1809.invokeStatic(form-init1501309315939750065.clj:1)
at user$eval1809.invoke(form-init1501309315939750065.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7176)
at clojure.lang.Compiler.eval(Compiler.java:7166)
at clojure.lang.Compiler.load(Compiler.java:7635)
at clojure.lang.Compiler.loadFile(Compiler.java:7573)
at clojure.main$load_script.invokeStatic(main.clj:452)
at clojure.main$init_opt.invokeStatic(main.clj:454)
at clojure.main$init_opt.invoke(main.clj:454)
at clojure.main$initialize.invokeStatic(main.clj:485)
at clojure.main$null_opt.invokeStatic(main.clj:519)
at clojure.main$null_opt.invoke(main.clj:516)
at clojure.main$main.invokeStatic(main.clj:598)
at clojure.main$main.doInvoke(main.clj:561)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:705)
at clojure.main.main(main.java:37)
Caused by: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)V
at com.google.javascript.rhino.IR.name(IR.java:381)
at com.google.javascript.jscomp.VarCheck.<clinit>(VarCheck.java:94)
at com.google.javascript.jscomp.DiagnosticGroups.<clinit>(DiagnosticGroups.java:243)
at cljs.closure__init.load(Unknown Source)
at cljs.closure__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2207)
at clojure.lang.RT.classForName(RT.java:2216)
at clojure.lang.RT.loadClassForName(RT.java:2235)
at clojure.lang.RT.load(RT.java:453)
at clojure.lang.RT.load(RT.java:428)
at clojure.core$load$fn__6824.invoke(core.clj:6126)
at clojure.core$load.invokeStatic(core.clj:6125)
at clojure.core$load.doInvoke(core.clj:6109)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5908)
at clojure.core$load_one.invoke(core.clj:5903)
at clojure.core$load_lib$fn__6765.invoke(core.clj:5948)
at clojure.core$load_lib.invokeStatic(core.clj:5947)
at clojure.core$load_lib.doInvoke(core.clj:5928)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$load_libs.invokeStatic(core.clj:5985)
at clojure.core$load_libs.doInvoke(core.clj:5969)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$require.invokeStatic(core.clj:6007)
at clojure.core$require.doInvoke(core.clj:6007)
at clojure.lang.RestFn.invoke(RestFn.java:2088)
at cljs.repl$loading__5569__auto____6321.invoke(repl.cljc:9)
at cljs.repl__init.load(Unknown Source)
at cljs.repl__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2207)
at clojure.lang.RT.classForName(RT.java:2216)
at clojure.lang.RT.loadClassForName(RT.java:2235)
at clojure.lang.RT.load(RT.java:453)
at clojure.lang.RT.load(RT.java:428)
at clojure.core$load$fn__6824.invoke(core.clj:6126)
at clojure.core$load.invokeStatic(core.clj:6125)
at clojure.core$load.doInvoke(core.clj:6109)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5908)
at clojure.core$load_one.invoke(core.clj:5903)
at clojure.core$load_lib$fn__6765.invoke(core.clj:5948)
at clojure.core$load_lib.invokeStatic(core.clj:5947)
at clojure.core$load_lib.doInvoke(core.clj:5928)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$load_libs.invokeStatic(core.clj:5985)
at clojure.core$load_libs.doInvoke(core.clj:5969)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$require.invokeStatic(core.clj:6007)
at clojure.core$require.doInvoke(core.clj:6007)
at clojure.lang.RestFn.invoke(RestFn.java:3894)
at shadow.cljs.devtools.api$eval2856$loading__6706__auto____2857.invoke(api.clj:1)
at shadow.cljs.devtools.api$eval2856.invokeStatic(api.clj:1)
at shadow.cljs.devtools.api$eval2856.invoke(api.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7176)
at clojure.lang.Compiler.eval(Compiler.java:7165)
at clojure.lang.Compiler.load(Compiler.java:7635)
... 68 more
nevermind, was some deps problem in the end
Hi, I’m changing an old project from fighweel to shadow, it used cljsjs/hightcharts
what should I use now highcharts npm or react-hightcharts npm?
@wvelezva if you used cljsjs/hightcharts, then look at their extern file https://github.com/cljsjs/packages/blob/master/highcharts/resources/cljsjs/highcharts/common/highcharts.ext.js and it looks to me that you were relying on hightcharts and not react-hightcharts.
@thheller I was skimming this channel the other day, and someone mentioned a web socket issue with RN. Could you point me to the details of the issue? I’ve had some problems with websocket disconnects in development which I just attributed to flakey environment (I.e. going through ngrok), but I want to make sure it’s not something more serious.
sorry, wrong question, now that I’m using shadow, I would like to use the highcharts js more directly, avoiding the cljsjs
it's all documented here https://shadow-cljs.github.io/docs/UsersGuide.html#_requiring_js
or here to be more percise https://shadow-cljs.github.io/docs/UsersGuide.html#js-deps
thanks @hlolli
yes, dev only. basically shadow-cljs just thinks that the REPL is still connected when it is not
is there a good trick to have shadow-cljs run babel after compilation, I want to use https://emotion.sh/docs/@emotion/babel-preset-css-prop to transform my js.
it's well documented babel + jsx and then import that. But I wonder with transformations on cljs sources (after compilation ofc, but before minification I'd assume).
you could in theory do it in a :compile-finish
hook but there is nothing built-in to do that
check :build-sources
in the compile state. those are the resource-ids for all sources that were compiled. (get-in build-state [:output resource-id])
will get you the compile output :js
is the generated JS for example
ah yes, I remember how huge data is being passed, good to know, otherwise I'd get lost 🙂
instead of transforming your JS, you should probably figure out a way to transform your CLJS code to use emotion
yes, it could be this wont work because of reagent. I think babel can be called on any js file, ancient or new.
I'm using emotion at a company I'm freelancing for in jsx. And I'd do anything do get it working in cljs with css prop. Lifesaver.
so you can call it on any JS file, of course. it just won’t do anything unless you’re using JSX
I’m reading the source code for the babel-preset-css-prop
plugin: https://github.com/emotion-js/emotion/blob/master/packages/babel-preset-css-prop/src/index.js
it takes JSX code <div css={
color: green`} />` and hooks into the JSX parser to transform the css
prop
so you think it would make sense to rewrite this transformation in shadow? Or patch reagent?
CLJS does not ever emit JSX, so you will never get any benefit from using that babel transform on your code
I'm surprised, since babel can be used for polyfills, typescript and ecmascript proposals, and transform es5 to es6 etc.
if you’re using reagent, I’m not sure what you should do. you could use a function or macro to parse a :css
prop in a map and do the transformation
I need to research, I think there's more to it. Because I should be able to pass it to className prop instead of css. But that doesn't work either. And I added this recently to a ts project and all I had to do was to add this babel preset and it works.
(def my-styles (emotion/css #js {:color "green"}))
(defn my-component []
[:div {:class my-styles} "Hello"])