Fork me on GitHub
#shadow-cljs
<
2022-04-12
>
orestis06:04:24

Since we finally dropped support for IE11, I updated our shadow-cljs output from :es5 to :es2018 -- I saw a very small change in the bundle size, I'm not sure why but I was expecting a bit more. Like, in our base bundle, we went from 279kb to 276kb gzip. Perhaps a total of another 5kb gzip across everything else. Not complaining, just curious if this is to be expected.

thheller06:04:21

that entirely depends on how many polyfills you previously relied on. CLJS itself doesn't need any so nothing to save there. only affects npm packages basically and those can vary greatly

thheller06:04:12

but yeah I'd say thats expected

orestis06:04:28

Yeah, of course we have removed our entire 50kb worth of polyfills, that was outside the CLJS bundle. I guess I thought that the output would use newer syntax which would be more compact.

orestis06:04:51

It's annoying that many npm modules do their own polyfills (it's visible even in the advanced optimisations).

thheller06:04:26

yep, can't do anything about those

Franklin10:04:57

hey thheller 👋 I'm getting an error when I try to update shadow-cljs dependency in my project to v2.18.0 and to v2.17.0 and also to v2.16.0 in my project v2.15.0 seems to work ok. the error message is a bit verbose but I'll just paste it here

Franklin10:04:25

ExceptionInfo: failed to convert sources
	shadow.build.closure/convert-sources-simple*/fn--11356 (closure.clj:1953)
	shadow.build.closure/convert-sources-simple* (closure.clj:1940)
	shadow.build.closure/convert-sources-simple* (closure.clj:1818)
	shadow.build.closure/convert-sources-simple (closure.clj:2112)
	shadow.build.closure/convert-sources-simple (closure.clj:2064)
	shadow.build.compiler/maybe-closure-convert (compiler.clj:1218)
	shadow.build.compiler/maybe-closure-convert (compiler.clj:1211)
	shadow.build.compiler/compile-all (compiler.clj:1463)
	shadow.build.compiler/compile-all (compiler.clj:1330)
	shadow.build.api/compile-sources (api.clj:261)
	shadow.build.api/compile-sources (api.clj:253)
	shadow.build/compile (build.clj:463)
	shadow.build/compile (build.clj:453)
	shadow.cljs.devtools.api/compile* (api.clj:296)
	shadow.cljs.devtools.api/compile* (api.clj:292)
	shadow.cljs.devtools.cli-actual/do-build-command (cli_actual.clj:34)
	shadow.cljs.devtools.cli-actual/do-build-command (cli_actual.clj:25)
	shadow.cljs.devtools.cli-actual/do-build-commands (cli_actual.clj:49)
	shadow.cljs.devtools.cli-actual/do-build-commands (cli_actual.clj:38)
	shadow.cljs.devtools.cli-actual/main/body-fn--15294--auto----15967 (cli_actual.clj:166)
	shadow.cljs.devtools.cli-actual/main (cli_actual.clj:165)
	shadow.cljs.devtools.cli-actual/main (cli_actual.clj:132)
	clojure.core/apply (core.clj:671)
	clojure.core/apply (core.clj:662)
	shadow.cljs.devtools.cli-actual/-main (cli_actual.clj:219)
	shadow.cljs.devtools.cli-actual/-main (cli_actual.clj:217)
	clojure.lang.Var.applyTo (Var.java:705)
	clojure.core/apply (core.clj:667)
	clojure.core/apply (core.clj:662)
	shadow.cljs.devtools.cli/-main (cli.clj:75)
	shadow.cljs.devtools.cli/-main (cli.clj:67)
	clojure.lang.Var.applyTo (Var.java:705)
	clojure.core/apply (core.clj:667)
	clojure.main/main-opt (main.clj:514)
	clojure.main/main-opt (main.clj:510)
	clojure.main/main (main.clj:664)
	clojure.main/main (main.clj:616)
	clojure.lang.Var.applyTo (Var.java:705)
	clojure.main.main (main.java:40)
Caused by:
RuntimeException: INTERNAL COMPILER ERROR.
Please report this problem.

Unexpected variable layoutCssVars
  Node(NAME layoutCssVars): node_modules/react-data-grid/lib/bundle.js:652:4
    layoutCssVars,
  Parent(STRING_KEY layoutCssVars): node_modules/react-data-grid/lib/bundle.js:652:4
    layoutCssVars,

	com.google.javascript.jscomp.Compiler.throwInternalError (Compiler.java:2907)
	com.google.javascript.jscomp.NodeTraversal.throwUnexpectedException (NodeTraversal.java:442)
	com.google.javascript.jscomp.NodeTraversal.traverseRoots (NodeTraversal.java:486)
	com.google.javascript.jscomp.NodeTraversal.access$400 (NodeTraversal.java:38)
	com.google.javascript.jscomp.NodeTraversal$Builder.traverseRoots (NodeTraversal.java:406)
	com.google.javascript.jscomp.VarCheck.process (VarCheck.java:154)
	com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process (PhaseOptimizer.java:317)
	com.google.javascript.jscomp.PhaseOptimizer.process (PhaseOptimizer.java:232)
	com.google.javascript.jscomp.Compiler.performTranspilationAndOptimizations (Compiler.java:2592)
	com.google.javascript.jscomp.Compiler.lambda$stage2Passes$8 (Compiler.java:966)
	com.google.javascript.jscomp.CompilerExecutor.runInCompilerThread (CompilerExecutor.java:127)
	com.google.javascript.jscomp.Compiler.runInCompilerThread (Compiler.java:1014)
	com.google.javascript.jscomp.Compiler.stage2Passes (Compiler.java:963)
	com.google.javascript.jscomp.Compiler.compile (Compiler.java:846)
	sun.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
	sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke (Method.java:498)
	clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:167)
	clojure.lang.Reflector.invokeInstanceMethod (Reflector.java:102)
	shadow.build.closure/convert-sources-simple*/fn--11356/fn--11357 (closure.clj:1943)
	shadow.build.closure/convert-sources-simple*/fn--11356 (closure.clj:1941)
	shadow.build.closure/convert-sources-simple* (closure.clj:1940)
	shadow.build.closure/convert-sources-simple* (closure.clj:1818)
	shadow.build.closure/convert-sources-simple (closure.clj:2112)
	shadow.build.closure/convert-sources-simple (closure.clj:2064)
	shadow.build.compiler/maybe-closure-convert (compiler.clj:1218)
	shadow.build.compiler/maybe-closure-convert (compiler.clj:1211)
	shadow.build.compiler/compile-all (compiler.clj:1463)
	shadow.build.compiler/compile-all (compiler.clj:1330)
	shadow.build.api/compile-sources (api.clj:261)
	shadow.build.api/compile-sources (api.clj:253)
	shadow.build/compile (build.clj:463)
	shadow.build/compile (build.clj:453)
	shadow.cljs.devtools.api/compile* (api.clj:296)
	shadow.cljs.devtools.api/compile* (api.clj:292)
	shadow.cljs.devtools.cli-actual/do-build-command (cli_actual.clj:34)
	shadow.cljs.devtools.cli-actual/do-build-command (cli_actual.clj:25)
	shadow.cljs.devtools.cli-actual/do-build-commands (cli_actual.clj:49)
	shadow.cljs.devtools.cli-actual/do-build-commands (cli_actual.clj:38)
	shadow.cljs.devtools.cli-actual/main/body-fn--15294--auto----15967 (cli_actual.clj:166)
	shadow.cljs.devtools.cli-actual/main (cli_actual.clj:165)
	shadow.cljs.devtools.cli-actual/main (cli_actual.clj:132)
	clojure.core/apply (core.clj:671)
	clojure.core/apply (core.clj:662)
	shadow.cljs.devtools.cli-actual/-main (cli_actual.clj:219)
	shadow.cljs.devtools.cli-actual/-main (cli_actual.clj:217)
	clojure.lang.Var.applyTo (Var.java:705)
	clojure.core/apply (core.clj:667)
	clojure.core/apply (core.clj:662)
	shadow.cljs.devtools.cli/-main (cli.clj:75)
	shadow.cljs.devtools.cli/-main (cli.clj:67)
	clojure.lang.Var.applyTo (Var.java:705)
	clojure.core/apply (core.clj:667)
	clojure.main/main-opt (main.clj:514)
	clojure.main/main-opt (main.clj:510)
	clojure.main/main (main.clj:664)
	clojure.main/main (main.clj:616)
	clojure.lang.Var.applyTo (Var.java:705)
	clojure.main.main (main.java:40)
Caused by:
IllegalStateException: Unexpected variable layoutCssVars
	com.google.javascript.jscomp.VarCheck.handleUndeclaredVariableRef (VarCheck.java:291)
	com.google.javascript.jscomp.VarCheck.checkName (VarCheck.java:213)
	com.google.javascript.jscomp.VarCheck.visit (VarCheck.java:173)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:856)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:847)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:847)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:847)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:847)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:847)
	com.google.javascript.jscomp.NodeTraversal.traverseFunction (NodeTraversal.java:895)
	com.google.javascript.jscomp.NodeTraversal.handleFunction (NodeTraversal.java:760)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:803)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:847)
	com.google.javascript.jscomp.NodeTraversal.traverseFunction (NodeTraversal.java:895)
	com.google.javascript.jscomp.NodeTraversal.handleFunction (NodeTraversal.java:760)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:803)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:847)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:847)
	com.google.javascript.jscomp.NodeTraversal.traverseChildren (NodeTraversal.java:984)
	com.google.javascript.jscomp.NodeTraversal.handleScript (NodeTraversal.java:748)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:800)
	com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:847)
	com.google.javascript.jscomp.NodeTraversal.traverseRoots (NodeTraversal.java:482)
	com.google.javascript.jscomp.NodeTraversal.access$400 (NodeTraversal.java:38)
	com.google.javascript.jscomp.NodeTraversal$Builder.traverseRoots (NodeTraversal.java:406)
	com.google.javascript.jscomp.VarCheck.process (VarCheck.java:154)
	com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process (PhaseOptimizer.java:317)
	com.google.javascript.jscomp.PhaseOptimizer.process (PhaseOptimizer.java:232)
	com.google.javascript.jscomp.Compiler.performTranspilationAndOptimizations (Compiler.java:2592)
	com.google.javascript.jscomp.Compiler.lambda$stage2Passes$8 (Compiler.java:966)
	com.google.javascript.jscomp.CompilerExecutor.runInCompilerThread (CompilerExecutor.java:127)
	com.google.javascript.jscomp.Compiler.runInCompilerThread (Compiler.java:1014)
	com.google.javascript.jscomp.Compiler.stage2Passes (Compiler.java:963)
	com.google.javascript.jscomp.Compiler.compile (Compiler.java:846)
	sun.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
	sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke (Method.java:498)
	clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:167)
	clojure.lang.Reflector.invokeInstanceMethod (Reflector.java:102)
	shadow.build.closure/convert-sources-simple*/fn--11356/fn--11357 (closure.clj:1943)
	shadow.build.closure/convert-sources-simple*/fn--11356 (closure.clj:1941)
	shadow.build.closure/convert-sources-simple* (closure.clj:1940)
	shadow.build.closure/convert-sources-simple* (closure.clj:1818)
	shadow.build.closure/convert-sources-simple (closure.clj:2112)
	shadow.build.closure/convert-sources-simple (closure.clj:2064)
	shadow.build.compiler/maybe-closure-convert (compiler.clj:1218)
	shadow.build.compiler/maybe-closure-convert (compiler.clj:1211)
	shadow.build.compiler/compile-all (compiler.clj:1463)
	shadow.build.compiler/compile-all (compiler.clj:1330)
	shadow.build.api/compile-sources (api.clj:261)
	shadow.build.api/compile-sources (api.clj:253)
	shadow.build/compile (build.clj:463)
	shadow.build/compile (build.clj:453)
	shadow.cljs.devtools.api/compile* (api.clj:296)
	shadow.cljs.devtools.api/compile* (api.clj:292)
	shadow.cljs.devtools.cli-actual/do-build-command (cli_actual.clj:34)
	shadow.cljs.devtools.cli-actual/do-build-command (cli_actual.clj:25)
	shadow.cljs.devtools.cli-actual/do-build-commands (cli_actual.clj:49)
	shadow.cljs.devtools.cli-actual/do-build-commands (cli_actual.clj:38)
	shadow.cljs.devtools.cli-actual/main/body-fn--15294--auto----15967 (cli_actual.clj:166)
	shadow.cljs.devtools.cli-actual/main (cli_actual.clj:165)
	shadow.cljs.devtools.cli-actual/main (cli_actual.clj:132)
	clojure.core/apply (core.clj:671)
	clojure.core/apply (core.clj:662)
	shadow.cljs.devtools.cli-actual/-main (cli_actual.clj:219)
	shadow.cljs.devtools.cli-actual/-main (cli_actual.clj:217)
	clojure.lang.Var.applyTo (Var.java:705)
	clojure.core/apply (core.clj:667)
	clojure.core/apply (core.clj:662)
	shadow.cljs.devtools.cli/-main (cli.clj:75)
	shadow.cljs.devtools.cli/-main (cli.clj:67)
	clojure.lang.Var.applyTo (Var.java:705)
	clojure.core/apply (core.clj:667)
	clojure.main/main-opt (main.clj:514)
	clojure.main/main-opt (main.clj:510)
	clojure.main/main (main.clj:664)
	clojure.main/main (main.clj:616)
	clojure.lang.Var.applyTo (Var.java:705)
	clojure.main.main (main.java:40)

error Command failed with exit code 1.
info Visit  for documentation about this command.
error Command failed with exit code 1.
info Visit  for documentation about this command.

Franklin10:04:37

I can share the contents of node_modules/react-data-grid/lib/bundle.js too if that's needed

Franklin11:04:45

I'm using java 8

thheller18:04:47

this is an error from the google closure compiler

thheller18:04:13

unfortunately nothing I can do to fix that

Franklin10:04:51

do you know what the cause of the issue might be?

Leif18:04:34

Probably a dumb question -- is there a way to recover after I type something syntactically invalid in a shadow-cljs REPL?

> (324234  ]
Failed to read: clojure.lang.ExceptionInfo: dummy.cljs [line 1, col 11] Unmatched delimiter ]. {:type :reader-exception, :ex-kind :reader-error, :file "dummy.cljs", :line 1, :col 11}
Whenever I mistype something, the REPL becomes unresponsive and I have to quit and restart it to continue.

👍 1
thheller18:04:15

@leiferiksonventures looks like a bug. if you want you can open a github issue for this. can't promise I'll get to it before forgetting about it otherwise 😛

❤️ 1
tomc20:04:19

@thheller Are you aware of any reason the approach you used here: https://code.thheller.com/blog/shadow-cljs/2019/03/03/code-splitting-clojurescript.html would no longer work? I'm trying to figure out why lazy loading is not working for me.

alex02:04:25

We recently implemented lazy-loading using this as a resource - what issues are you experiencing with this approach?

thheller04:04:33

this works just fine still? what is the problem you see?

tomc14:04:34

Thanks for the replies - the issue was on my end. I had mismatched versions of react and react-dom. d'oh