shadow-cljs

Priyankaa 2025-08-08T05:26:32.351539Z

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 for documentation about this command. Exited with code exit status 1

➕ 1
Priyankaa 2025-08-08T05:31:40.693169Z

thheller 2025-08-08T06:37:35.054009Z

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

👀 1
thheller 2025-08-08T06:37:57.022979Z

loading them in your HTML is up to you though

Priyankaa 2025-08-11T06:54:15.072499Z

my last prod build was working with current 2.X shadow cljs why suddenly it is failing for 3.X?

Priyankaa 2025-08-11T06:56:11.909709Z

[: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.

Priyankaa 2025-08-08T08:14:58.926669Z

after upgrading to 3.1.8 - getting below error -

thheller 2025-08-08T09:52:24.205209Z

shadow-cljs version 3+ requires at minimum Java21. looks like you have an older JDK version.

thheller 2025-08-08T09:53:31.219589Z

I use java24 but anything 21 and up is ok

thheller 2025-08-08T09:54:09.821309Z

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

Priyankaa 2025-08-08T11:37:04.763789Z

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 for documentation about this command. Exited with code exit status 1

Priyankaa 2025-08-08T11:39:47.484559Z

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]}}}

thheller 2025-08-08T13:01:51.196299Z

uhm @compiled/react was some weird package that required compile time support and extra build tool plugins

thheller 2025-08-08T13:01:55.218999Z

shadow-cljs does not support that

thheller 2025-08-08T13:03:27.609629Z

but it should still "run". but support for that was also more recent, so would require an update

thheller 2025-08-08T13:04:30.309479Z

so that was fixed in 3.1.2

thheller 2025-08-11T07:05:12.401129Z

{: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

thheller 2025-08-11T07:05:58.046079Z

means 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

thheller 2025-08-11T07:07:15.245719Z

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.

Priyankaa 2025-08-11T07:16:59.470209Z

my last prod build was working with current 2.X shadow cljs 3 weeks before why suddenly it is failing for 3.X?

thheller 2025-08-11T07:18:01.808279Z

I literally just answered that.

thheller 2025-08-11T07:18:04.741609Z

> one thing I removed in 3.x was the automatic polyfilling of node built-in packages ...

Priyankaa 2025-08-11T07:18:22.412739Z

why it is not working in 2.X ?

thheller 2025-08-11T07:19:04.384209Z

I do not know. this particular issue should have been the exact same error since basically the first version of shadow-cljs

thheller 2025-08-11T07:19:41.688189Z

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

thheller 2025-08-11T07:20:22.562469Z

I can't see the exact circumstances in your project to answer this correctly. I'm guessing blind.

Priyankaa 2025-08-11T07:20:49.984359Z

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"}"

Priyankaa 2025-08-11T07:21:07.258209Z

i sit possible to fix this in 2.X

thheller 2025-08-11T07:22:08.518679Z

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

Priyankaa 2025-08-11T07:22:28.366729Z

that suggestion does not not work

thheller 2025-08-11T07:24:26.686579Z

does not work how? are you sure you are setting it in the correct place?

thheller 2025-08-11T07:25:09.203819Z

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}

Priyankaa 2025-08-11T07:28:59.412899Z

yes

thheller 2025-08-11T07:29:29.811489Z

so that should fix the Errors encountered while trying to parse file error

Priyankaa 2025-08-11T07:29:47.194579Z

it snot working

thheller 2025-08-11T07:30:23.206839Z

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

Priyankaa 2025-08-11T07:35:39.634229Z

let me retry again will post my observation

Priyankaa 2025-08-11T07:40:45.007049Z

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

thheller 2025-08-11T07:41:30.500919Z

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

thheller 2025-08-11T07:41:40.541319Z

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

Priyankaa 2025-08-11T07:42:20.027279Z

"shadow-cljs": "2.28.22" i did not updated it l.. it is as it is from last successful build in prod

thheller 2025-08-11T07:42:58.461979Z

then you maybe upgraded the npm package in question which previously did not use this @compiled/react thing

thheller 2025-08-11T07:43:13.216049Z

some @atlastkit package probably

Priyankaa 2025-08-11T07:43:45.424409Z

i did not updated anything.. just checked from master branch which was woking in our last prod release which was 3 weeks before

thheller 2025-08-11T07:44:27.293229Z

"did not update" anything doesn't mean it wasn't updated

thheller 2025-08-11T07:44:46.729239Z

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

Priyankaa 2025-08-11T07:46:03.084389Z

manually we did not added anything so it did updated the lock file ..

Priyankaa 2025-08-11T07:46:09.399429Z

lock file was not changed

thheller 2025-08-11T07:46:50.946259Z

🤷

thheller 2025-08-11T07:47:08.242219Z

I do not see how an unchanged setup works and then suddenly doesn't. thats just not a thing that happens.

Priyankaa 2025-08-11T07:47:29.317599Z

i cross verified the last couple of PR merged we did not have any dependencies or lock file updates

thheller 2025-08-11T07:48:21.780489Z

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

thheller 2025-08-11T07:49:13.190259Z

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.

yf wang 2025-08-08T06:10:54.183799Z

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!

thheller 2025-08-08T06:40:32.096879Z

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.

yf wang 2025-08-08T07:08:14.004979Z

I'll try.

yf wang 2025-08-09T14:11:38.113119Z

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!

thheller 2025-08-10T04:50:29.494259Z

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"