can anyone pls help on it ? --------------------------------------------------------------------------------
[:app] Compiling ...
Failed to inspect file
/home/circleci/numbered-headings/node_modules/@atlaskit/section-message/node_modules/@atlaskit/icon/dist/cjs/components/icon.compiled.css
Errors encountered while trying to parse file
/home/circleci/numbered-headings/node_modules/@atlaskit/section-message/node_modules/@atlaskit/icon/dist/cjs/components/icon.compiled.css
{:line 1, :column 1, :message "primary expression expected"}
error Command failed with exit code 1.
info Visit
Exited with code exit status 1
if you upgrade to the latest shadow-cljs this warning will go away. if you actually also want to use the CSS referenced there you can use the new css hook I added to extract it. you can add :build-hooks [(shadow.build.css/extract-hook)] to the build config, which will create CSS files in the :output-dir of the build
loading them in your HTML is up to you though
my last prod build was working with current 2.X shadow cljs why suddenly it is failing for 3.X?
[:app] Compiling ... package in /home/circleci/numbered-headings/node_modules/crypto specified entries but they were all missing {:tag :shadow.build.npm/missing-entries, :entries ["index.js"], :package-dir #object[java.io.File 0x304694b0 "/home/circleci/numbered-headings/node_modules/crypto"]} ExceptionInfo: package in /home/circleci/numbered-headings/node_modules/crypto specified entries but they were all missing shadow.build.npm/find-match-in-package (npm.clj:582) shadow.build.npm/find-match-in-package (npm.clj:562) shadow.build.npm/find-resource-in-package (npm.clj:856) shadow.build.npm/find-resource-in-package (npm.clj:825) shadow.build.npm/find-resource (npm.clj:992) shadow.build.npm/find-resource (npm.clj:891) shadow.build.resolve/find-npm-resource (resolve.clj:123) shadow.build.resolve/find-npm-resource (resolve.clj:94) shadow.build.resolve/eval13099/fn--13102 (resolve.clj:266) clojure.lang.MultiFn.invoke (MultiFn.java:244) shadow.build.resolve/find-resource-for-string (resolve.clj:81) shadow.build.resolve/find-resource-for-string (resolve.clj:70) shadow.build.resolve/resolve-string-require (resolve.clj:466) shadow.build.resolve/resolve-string-require (resolve.clj:449) shadow.build.resolve/resolve-require (resolve.clj:702) shadow.build.resolve/resolve-require (resolve.clj:695) shadow.build.resolve/resolve-deps/fn--13048 (resolve.clj:52) clojure.lang.PersistentVector.reduce (PersistentVector.java:343) clojure.core/reduce (core.clj:6886) clojure.core/reduce (core.clj:6869) shadow.cljs.util/reduce-> (util.clj:42) shadow.cljs.util/reduce-> (util.clj:41) shadow.build.resolve/resolve-deps (resolve.clj:50) shadow.build.resolve/resolve-deps (resolve.clj:34) shadow.build.resolve/resolve-string-require (resolve.clj:491) shadow.build.resolve/resolve-string-require (resolve.clj:449) shadow.build.resolve/resolve-require (resolve.clj:702) shadow.build.resolve/resolve-require (resolve.clj:695) shadow.build.resolve/resolve-deps/fn--13048 (resolve.clj:52) clojure.lang.PersistentVector.reduce (PersistentVector.java:343) clojure.core/reduce (core.clj:6886) clojure.core/reduce (core.clj:6869) shadow.cljs.util/reduce-> (util.clj:42) shadow.cljs.util/reduce-> (util.clj:41) shadow.build.resolve/resolve-deps (resolve.clj:50) shadow.build.resolve/resolve-deps (resolve.clj:34) shadow.build.resolve/resolve-string-require (resolve.clj:491) shadow.build.resolve/resolve-string-require (resolve.clj:449) shadow.build.resolve/resolve-require (resolve.clj:702) shadow.build.resolve/resolve-require (resolve.clj:695) shadow.build.resolve/resolve-deps/fn--13048 (resolve.clj:52) clojure.lang.PersistentVector.reduce (PersistentVector.java:343) clojure.core/reduce (core.clj:6886) clojure.core/reduce (core.clj:6869) shadow.cljs.util/reduce-> (util.clj:42) shadow.cljs.util/reduce-> (util.clj:41) shadow.build.resolve/resolve-deps (resolve.clj:50) shadow.build.resolve/resolve-deps (resolve.clj:34) shadow.build.resolve/resolve-symbol-require (resolve.clj:689) shadow.build.resolve/resolve-symbol-require (resolve.clj:649) shadow.build.resolve/resolve-require (resolve.clj:699) shadow.build.resolve/resolve-require (resolve.clj:695) shadow.build.resolve/resolve-deps/fn--13048 (resolve.clj:52) clojure.lang.PersistentVector.reduce (PersistentVector.java:343) clojure.core/reduce (core.clj:6886) clojure.core/reduce (core.clj:6869) shadow.cljs.util/reduce-> (util.clj:42) shadow.cljs.util/reduce-> (util.clj:41) shadow.build.resolve/resolve-deps (resolve.clj:50) shadow.build.resolve/resolve-deps (resolve.clj:34) shadow.build.resolve/resolve-symbol-require (resolve.clj:689) shadow.build.resolve/resolve-symbol-require (resolve.clj:649) shadow.build.resolve/resolve-require (resolve.clj:699) shadow.build.resolve/resolve-require (resolve.clj:695) shadow.build.resolve/resolve-entry (resolve.clj:709) shadow.build.resolve/resolve-entry (resolve.clj:708) clojure.lang.PersistentVector.reduce (PersistentVector.java:343) clojure.core/reduce (core.clj:6886) clojure.core/reduce (core.clj:6869) shadow.cljs.util/reduce-> (util.clj:42) shadow.cljs.util/reduce-> (util.clj:41) shadow.build.resolve/resolve-entries (resolve.clj:723) shadow.build.resolve/resolve-entries (resolve.clj:714) shadow.build.modules/resolve-module/fn--16018 (modules.clj:252) shadow.build.modules/resolve-module (modules.clj:248) shadow.build.modules/resolve-module (modules.clj:238) clojure.lang.PersistentVector.reduce (PersistentVector.java:343) clojure.core/reduce (core.clj:6886) clojure.core/reduce (core.clj:6869) shadow.build.modules/resolve-modules (modules.clj:258) error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
after upgrading to 3.1.8 - getting below error -
shadow-cljs version 3+ requires at minimum Java21. looks like you have an older JDK version.
I use java24 but anything 21 and up is ok
if you'd rather not upgrade and just ignore the css you can set :js-options {:ignore-asset-requires true} in the build config. but that'll just ignore them, with no way to get the actual css
After ignoring :js-options {:ignore-asset-requires true} i get below error - [`:app] Compiling ...`
package @compiled/react had exports, but could not resolve ./runtime
{:package #object[java.io.File 0x4a23788 "/home/circleci/numbered-headings/node_modules/@compiled/react"], :require-from [:shadow.build.npm/resource "node_modules/@atlaskit/section-message/node_modules/@atlaskit/icon/dist/cjs/components/icon.js"], :rel-require "./runtime"}
ExceptionInfo: package @compiled/react had exports, but could not resolve ./runtime
shadow.build.npm/find-resource-in-package (npm.clj:835)
shadow.build.npm/find-resource-in-package (npm.clj:813)
shadow.build.npm/find-resource (npm.clj:987)
shadow.build.npm/find-resource (npm.clj:879)
shadow.build.resolve/find-npm-resource (resolve.clj:123)
shadow.build.resolve/find-npm-resource (resolve.clj:94)
shadow.build.resolve/eval13071/fn--13074 (resolve.clj:266)
clojure.lang.MultiFn.invoke (MultiFn.java:244)
shadow.build.resolve/find-resource-for-string (resolve.clj:81)
shadow.build.resolve/find-resource-for-string (resolve.clj:70)
shadow.build.resolve/resolve-string-require (resolve.clj:466)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
shadow.build.resolve/resolve-deps (resolve.clj:50)
shadow.build.resolve/resolve-deps (resolve.clj:34)
shadow.build.resolve/resolve-string-require (resolve.clj:491)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
shadow.build.resolve/resolve-deps (resolve.clj:50)
shadow.build.resolve/resolve-deps (resolve.clj:34)
shadow.build.resolve/resolve-string-require (resolve.clj:491)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
shadow.build.resolve/resolve-deps (resolve.clj:50)
shadow.build.resolve/resolve-deps (resolve.clj:34)
shadow.build.resolve/resolve-string-require (resolve.clj:491)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
shadow.build.resolve/resolve-deps (resolve.clj:50)
shadow.build.resolve/resolve-deps (resolve.clj:34)
shadow.build.resolve/resolve-string-require (resolve.clj:491)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
shadow.build.resolve/resolve-deps (resolve.clj:50)
shadow.build.resolve/resolve-deps (resolve.clj:34)
shadow.build.resolve/resolve-string-require (resolve.clj:491)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
error Command failed with exit code 1.
info Visit
Exited with code exit status 1
below is my edn file - {:deps true
:http {:host "localhost"
:ssl-port 9630}
:ssl {:keystore "ssl/keystore.jks"
:password "changeit"}
:builds {:functions {:target :node-library
:output-to "functions/index.js"
:exports-var numbered-headings.server/cloud-functions
:closure-defines {numbered-headings.server.amplitude-helper/AMPLITUDE_KEY #shadow/env "AMPLITUDE_KEY"
numbered-headings.server.handlers/LOGROCKET_KEY #shadow/env "LOGROCKET_KEY"
numbered-headings.server.handlers/CSP_UNSAFE_EVAL #shadow/env "CSP_UNSAFE_EVAL"
numbered-headings.server.launchdarkly-helper/LAUNCH_DARKLY_KEY #shadow/env "LAUNCH_DARKLY_KEY"}}
:app {:target :browser
:js-options
{:resolve {"jquery" {:target :global
:global "jQuery"} "jQuery" {:target :global
:global "jQuery"}}
:ignore-asset-requires true}
:compiler-options {:output-feature-set :es8}
:output-dir "public/js"
:asset-path "/js"
:module-hash-names true
:build-options {:manifest-name "../../functions/manifest.edn"}
:devtools {:before-load numbered-headings.ui.current-app/stop
:after-load numbered-headings.ui.current-app/start
:devtools-url ""}
:modules {:shared {:entries []
:init-fn numbered-headings.ui.amplitude-client/initialize}
:main {:entries [numbered-headings.ui.modules.page]
:init-fn numbered-headings.ui.modules.page/init
:depends-on #{:shared}}
:hidden {:entries [numbered-headings.ui.modules.page-hidden]
:init-fn numbered-headings.ui.modules.page-hidden/init
:depends-on #{:shared}}
:legacy {:entries [numbered-headings.ui.modules.legacy]
:init-fn numbered-headings.ui.modules.legacy/init
:depends-on #{:shared}}
:macro {:entries [numbered-headings.ui.modules.macro]
:init-fn numbered-headings.ui.modules.macro/init
:depends-on #{:shared}}
:new-getting-started {:entries [numbered-headings.ui.pages.new-getting-started]
:init-fn numbered-headings.ui.pages.new-getting-started/init
:depends-on #{:shared}}
:space-config {:entries []
:init-fn
:depends-on #{:shared}}
:global-config {:entries [numbered-headings.ui.modules.global]
:init-fn numbered-headings.ui.modules.global/init
:depends-on #{:shared}}
:configure {:entries [numbered-headings.ui.pages.configure]
:init-fn numbered-headings.ui.pages.configure/init
:depends-on #{:shared}}}
:closure-defines {numbered-headings.ui.amplitude-client/AMPLITUDE_KEY #shadow/env "AMPLITUDE_KEY"
numbered-headings.ui.amplitude-client/FINGER_PRINT_KEY #shadow/env "FINGER_PRINT_KEY"}}
:test
{:target :node-test
:output-to "target/node-tests.js"
:ns-regexp "-test$"
:autorun true}
:cards {:target nubank.workspaces.shadow-cljs.target
:ns-regexp "^numbered-headings\\.client.*-(test|cards)$"
:output-dir "public/js/workspaces"
:asset-path "/js/workspaces"
:preloads [com.fulcrologic.fulcro.inspect.preload]}}} uhm @compiled/react was some weird package that required compile time support and extra build tool plugins
shadow-cljs does not support that
but it should still "run". but support for that was also more recent, so would require an update
https://github.com/thheller/shadow-cljs/commit/eb324f27c99023e45beca8a8a135909fb06166cb
so that was fixed in 3.1.2
{:tag :shadow.build.npm/missing-entries, :entries ["index.js"], :package-dir #object[java.io.File 0x304694b0 "/home/circleci/numbered-headings/node_modules/crypto"]}
ExceptionInfo: package in /home/circleci/numbered-headings/node_modules/crypto specified entries but they were all missingmeans that in the /home/circleci/numbered-headings/node_modules/crypto/package.json file there is "main" (or maybe "`browser"`) entry, that points to a index.js but /home/circleci/numbered-headings/node_modules/crypto/index.js does not exist
dunno what kind of package that is, crypto is usually a node built-in package that is not available in browsers. maybe you created that manually to fix another build issue? one thing I removed in 3.x was the automatic polyfilling of node built-in packages. didn't realize how many "old" things still rely on that, given that webpack removed it over 5 years ago.
my last prod build was working with current 2.X shadow cljs 3 weeks before why suddenly it is failing for 3.X?
I literally just answered that.
> one thing I removed in 3.x was the automatic polyfilling of node built-in packages ...
why it is not working in 2.X ?
I do not know. this particular issue should have been the exact same error since basically the first version of shadow-cljs
seems like you tried a half way fix of creating node_modules/crypto manually. I do not know where this folder otherwise would come from. can't find a matching npm package that would create that
I can't see the exact circumstances in your project to answer this correctly. I'm guessing blind.
i mean if i just use 2.X which was working 3 weeks before now getting below issue "[:app] Compiling ...
Failed to inspect file
/home/circleci/numbered-headings/node_modules/@atlaskit/section-message/node_modules/@atlaskit/icon/dist/cjs/components/icon.compiled.css
Errors encountered while trying to parse file
/home/circleci/numbered-headings/node_modules/@atlaskit/section-message/node_modules/@atlaskit/icon/dist/cjs/components/icon.compiled.css
{:line 1, :column 1, :message "primary expression expected"}"
i sit possible to fix this in 2.X
I answered that already too? that would have NEVER worked before, so I do not know what the "3 weeks" you are talking about. the only way to get the above working on 2.x was setting :js-options {:ignore-asset-requires true} in the build config
that suggestion does not not work
does not work how? are you sure you are setting it in the correct place?
I mean you had it in the correct place in the config you posted before?
:app {:target :browser
:js-options
{:resolve {"jquery" {:target :global
:global "jQuery"} "jQuery" {:target :global
:global "jQuery"}}
:ignore-asset-requires true}yes
so that should fix the Errors encountered while trying to parse file error
it snot working
its not working because you are still getting that error, or the following error you posted package @compiled/react had exports, but could not resolve ./runtime
let me retry again will post my observation
i get the below error with :ignore-asset-requires true}--------------------------------------------------------------------------------
[:app] Compiling ...
package @compiled/react had exports, but could not resolve ./runtime
{:package #object[java.io.File 0x40dc4c35 "/home/circleci/numbered-headings/node_modules/@compiled/react"], :require-from [:shadow.build.npm/resource "node_modules/@atlaskit/section-message/node_modules/@atlaskit/icon/dist/cjs/components/icon.js"], :rel-require "./runtime"}
ExceptionInfo: package @compiled/react had exports, but could not resolve ./runtime
shadow.build.npm/find-resource-in-package (npm.clj:835)
shadow.build.npm/find-resource-in-package (npm.clj:813)
shadow.build.npm/find-resource (npm.clj:987)
shadow.build.npm/find-resource (npm.clj:879)
shadow.build.resolve/find-npm-resource (resolve.clj:123)
shadow.build.resolve/find-npm-resource (resolve.clj:94)
shadow.build.resolve/eval13071/fn--13074 (resolve.clj:266)
clojure.lang.MultiFn.invoke (MultiFn.java:244)
shadow.build.resolve/find-resource-for-string (resolve.clj:81)
shadow.build.resolve/find-resource-for-string (resolve.clj:70)
shadow.build.resolve/resolve-string-require (resolve.clj:466)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
shadow.build.resolve/resolve-deps (resolve.clj:50)
shadow.build.resolve/resolve-deps (resolve.clj:34)
shadow.build.resolve/resolve-string-require (resolve.clj:491)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
shadow.build.resolve/resolve-deps (resolve.clj:50)
shadow.build.resolve/resolve-deps (resolve.clj:34)
shadow.build.resolve/resolve-string-require (resolve.clj:491)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
shadow.build.resolve/resolve-deps (resolve.clj:50)
shadow.build.resolve/resolve-deps (resolve.clj:34)
shadow.build.resolve/resolve-string-require (resolve.clj:491)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
shadow.build.resolve/resolve-deps (resolve.clj:50)
shadow.build.resolve/resolve-deps (resolve.clj:34)
shadow.build.resolve/resolve-string-require (resolve.clj:491)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
shadow.build.resolve/resolve-deps (resolve.clj:50)
shadow.build.resolve/resolve-deps (resolve.clj:34)
shadow.build.resolve/resolve-string-require (resolve.clj:491)
shadow.build.resolve/resolve-string-require (resolve.clj:449)
shadow.build.resolve/resolve-require (resolve.clj:702)
shadow.build.resolve/resolve-require (resolve.clj:695)
shadow.build.resolve/resolve-deps/fn--13020 (resolve.clj:52)
clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
clojure.core/reduce (core.clj:6886)
clojure.core/reduce (core.clj:6869)
shadow.cljs.util/reduce-> (util.clj:42)
shadow.cljs.util/reduce-> (util.clj:41)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Exited with code exit status 1
yes, ok. then I suspect that you upgraded from an older shadow-cljs version that didn't have support for the "exports" field this above error is running into
which I believe was in 2.23.x something. so if you upgraded 2.28.x which does support this field but not this particular variant of weird "exports" then that explains that error
"shadow-cljs": "2.28.22" i did not updated it l.. it is as it is from last successful build in prod
then you maybe upgraded the npm package in question which previously did not use this @compiled/react thing
some @atlastkit package probably
i did not updated anything.. just checked from master branch which was woking in our last prod release which was 3 weeks before
"did not update" anything doesn't mean it wasn't updated
npm likely has this version range default, so just running npm install is not deterministic. i.e. if the lock file was changed or deleted you may get entire different set of dependencies
manually we did not added anything so it did updated the lock file ..
lock file was not changed
🤷
I do not see how an unchanged setup works and then suddenly doesn't. thats just not a thing that happens.
i cross verified the last couple of PR merged we did not have any dependencies or lock file updates
I don't know your setup and how everything works. just because the files in git don't change doesn't mean the files you actually have on disc reflect all that correctly
if you have a reproducible example I can look at I'm happy to do that, otherwise I'm still guessing blind which is reaching its limits of what I can do.
Hi everyone,
I'm trying to integrate @radix-ui/react-collection into my cljs/shadow-cljs/uix project, but I've hit a roadblock during compilation. The error is clear:
[:frontend] Build failure:
Closure compilation failed with 18 errors
--- node_modules/@radix-ui/react-collection/dist/index.js:118
This language feature is not currently supported by the compiler: Private class properties.
...
I've learned that this isn't a shadow-cljs issue, but rather a known limitation in the Google Closure Compiler itself. Support for this feature is still an open issue on their end (see: https://github.com/google/closure-compiler/issues/2731).
My shadow-cljs.edn is as follows:
;; shadow-cljs.edn
{:builds {:frontend {:build-hooks [],
:devtools {:preloads [], :watch-dir "public"},
:modules {:main {:init-fn }},
:output-dir "public/js",
:target :browser}},
:deps true,
:dev-http {8080 "public"},
:source-paths ["src/dev" "src/main" "src/test"]}
A working solution from @thheller is to add these :js-options:
:js-options {:output-feature-set :es-unsupported
:language-in :unsupported}
This works great, but it feels like a broad-stroke solution. My question is: given that this is a known Closure Compiler limitation, is this the standard workaround in the ClojureScript community? Or are there other common strategies for dealing with this, perhaps more targeted ones?
Thanks for any insights!Still same answer I gave on github, but an alternative is using :js-provider :external. That offloads all npm JS handling to any JS build tool of your choice (e.g. webpack). shadow-cljs will then just process the CLJS code but no npm code, thus no closure compiler limitations. but it means you have a manually configure and run a secondary build tool.
https://shadow-cljs.github.io/docs/UsersGuide.html#js-provider-external
I'll try.
The :js-provider :external approach is working perfectly.
I saw in the documentation that this is the expected behavior:
> This will limit certain dynamic interaction. Adding new npm requires will require reloading the page, since they can no longer be hot-loaded in by shadow-cljs. Requiring npm packages at the REPL will also be limited to those already provided by the external JS file. Which often is not a big deal, but something to be aware of.
So, my question is purely out of curiosity: is this a hard limitation due to the separation of the build tools, or are there any clever community workarounds to get hot-reloading for the external bundle as well?
It's not a big issue, of course, just wondering if there's a trick I'm missing to make the dev experience even smoother.
Thanks again for all your help!
no clue, never tried myself. I imagine it gets tricky. :external alone has its issues and limitations, so its brittle as it is without additional "perks"