clojurescript

Priyankaa 2025-03-27T10:24:52.372139Z

After updating my ClojureScript project to support the gcp function runtime upgrade from Node.js 18 to 20, I have also updated cheerio to latest version ----- I'm encountering the following error. Any help would be appreciated! The required JS dependency "node:stream" is not available, it was required by "node_modules/parse5-parser-stream/dist/cjs/index.js". Dependency Trace: numbered_headings/ui/modules/global.cljs numbered_headings/ui/modules/global_config.cljs numbered_headings/ui/remote.cljs node_modules/cheerio/dist/commonjs/index.js node_modules/parse5-parser-stream/dist/cjs/index.js

thheller 2025-03-27T10:25:58.130069Z

this means that this library is trying to use the node built-in stream package. which isn't available when building for the browser

thheller 2025-03-27T10:28:35.244519Z

or which :target do you use? also which shadow-cljs version do you use?

Priyankaa 2025-03-27T10:30:17.867979Z

:target :browser

Priyankaa 2025-03-27T10:30:56.345249Z

"shadow-cljs": "2.16.12"

thheller 2025-03-27T10:32:05.582269Z

ok upgrade shadow-cljs and it should just work

thheller 2025-03-27T10:32:28.442809Z

2.28.22 is the latest

1
Priyankaa 2025-03-27T10:44:25.382159Z

still getting the same issue - it exactly happened after upgrading firebase , firebase-admin and firebase-functions to latest version to upgrade node20 in gcp functions.

thheller 2025-03-27T10:51:18.689349Z

node_modules/cheerio/dist/commonjs/index.js this file should not be picked if you actually upgraded and restarted after

thheller 2025-03-27T10:51:47.963549Z

there is a node_modules/cheerio/dist/browser/index.js that should be used instead?

thheller 2025-03-27T10:52:11.308879Z

or is that being used and it still ends up with the node:stream dependency further down?

Priyankaa 2025-03-27T10:56:05.576859Z

is that being used and it still ends up with the node:stream dependency further down

thheller 2025-03-27T11:53:29.917819Z

kinda don't believe that? that file has no node:stream require. so that would be weird?

thheller 2025-03-27T11:53:48.450859Z

or what is the entire new dependency trace?

Priyankaa 2025-03-27T12:11:17.935449Z

[2025-03-27 16:10:42.900 - WARNING] TCP Port 9630 in use. shadow-cljs - server version: 2.16.12 running at https://localhost:9630 shadow-cljs - nREPL server started on port 54779 shadow-cljs - watching build :functions shadow-cljs - watching build :app [:functions] Configuring build. [:app] Configuring build. [:app] Compiling ... [:functions] Compiling ... [:app] Build failure: The required JS dependency "node:stream" is not available, it was required by "node_modules/parse5-parser-stream/dist/cjs/index.js". Dependency Trace: numbered_headings/ui/modules/global.cljs numbered_headings/ui/modules/global_config.cljs numbered_headings/ui/remote.cljs node_modules/cheerio/dist/commonjs/index.js node_modules/parse5-parser-stream/dist/cjs/index.js Searched for npm packages in: /Users/priyanka.gupta/sde/development/numbered-headings-cloud/node_modules

thheller 2025-03-27T12:26:07.065049Z

node_modules/cheerio/dist/commonjs/index.js

thheller 2025-03-27T12:26:13.743279Z

shadow-cljs - server version: 2.16.12

thheller 2025-03-27T12:26:19.535909Z

so you didn't upgrade

thheller 2025-03-27T12:26:56.113859Z

btw for multi line code

like
this
use three backticks

👍 1
Priyankaa 2025-03-27T17:50:57.156369Z

as per suggestion after upgrating the shawdow-cljs to 2.28.22 the issue "node:stream" is not available resolved -- but i am getting below issue now - shadow-cljs - config: /Users/priyanka.gupta/sde/development/numbered-headings-cloud/shadow-cljs.edn shadow-cljs - starting via "clojure" [2025-03-27 22:57:38.174 - WARNING] TCP Port 9630 in use. shadow-cljs - server version: *2.28.22* running at shadow-cljs - nREPL server started on port 65325 shadow-cljs - watching build :functions shadow-cljs - watching build :app [:functions] Configuring build. [:app] Configuring build. [:app] Compiling ... [:functions] Compiling ... WARNING: abs already refers to: #'clojure.core/abs in namespace: taoensso.encore, being replaced by: #'taoensso.encore/abs [:app] Build failure: package firebase-functions had exports, but could not resolve ./lib/logger {:package #object[java.io.File 0x3da41d65 "/Users/priyanka.gupta/sde/development/numbered-headings-cloud/node_modules/firebase-functions"], :require-from nil, :rel-require "./lib/logger"} ExceptionInfo: package firebase-functions had exports, but could not resolve ./lib/logger 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-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--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-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--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-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--15935 (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) shadow.build.modules/resolve-modules (modules.clj:257) shadow.build.modules/analyze (modules.clj:312) shadow.build.modules/analyze (modules.clj:303) shadow.build/resolve (build.clj:459) shadow.build/resolve (build.clj:453) shadow.build/compile (build.clj:509) shadow.build/compile (build.clj:493) shadow.cljs.devtools.server.worker.impl/build-compile (impl.clj:368) shadow.cljs.devtools.server.worker.impl/build-compile (impl.clj:349) shadow.cljs.devtools.server.worker.impl/eval17760/fn--17762 (impl.clj:448) clojure.lang.MultiFn.invoke (MultiFn.java:234) shadow.cljs.devtools.server.util/server-thread/fn--17513/fn--17514/fn--17522 (util.clj:283) shadow.cljs.devtools.server.util/server-thread/fn--17513/fn--17514 (util.clj:282) shadow.cljs.devtools.server.util/server-thread/fn--17513 (util.clj:255) WARNING: update-keys already refers to: #'clojure.core/update-keys in namespace: io.aviso.exception, being replaced by: #'io.aviso.exception/update-keys [:functions] Build completed. (268 files, 3 compiled, 1 warnings, 16.94s) `------ WARNING #1 - :redef -----------------------------------------------------` Resource: taoensso/encore.cljs:964:1 -------------------------------------------------------------------------------- 961 | ) 962 | 963 | (defn pow [n exp] (Math/pow n exp)) `964 | (defn abs [n] (if (neg? n) (- n) n)) ; #+clj (Math/abs n) reflects` -------^------------------------------------------------------------------------ `abs already refers to: cljs.core/abs being replaced by: taoensso.encore/abs` -------------------------------------------------------------------------------- 965 | (defn round* ; round 966 | ([ n] (round* :round nil n)) 967 | ([type n] (round* type nil n)) 968 | ([type nplaces n] -------------------------------------------------------------------------------- ^Cmake: *** [watch] Interrupt: 2

thheller 2025-03-27T17:53:09.185569Z

looks like you have a (:require ["firebase-functions/lib/logger" ...]) in your code somewhere? but the library doesn't want you to do that

thheller 2025-03-27T17:53:17.241039Z

possibly because you upgraded that dependency?

thheller 2025-03-27T17:54:10.405399Z

(:require ["firebase-functions/logger" ...]) is what you are supposed to be doing when looking at the package.json of that package

Priyankaa 2025-03-27T18:15:01.056899Z

fixed the above issue by replacing the proper import -- now getting new issue while building the app - shadow-cljs - starting via "clojure" [2025-03-27 23:42:33.672 - WARNING] TCP Port 9630 in use. shadow-cljs - server version: 2.28.22 running at shadow-cljs - nREPL server started on port 50790 shadow-cljs - watching build :functions shadow-cljs - watching build :app [:functions] Configuring build. [:app] Configuring build. [:app] Compiling ... [:functions] Compiling ... [:app] Build failure: The required JS dependency "async_hooks" is not available, it was required by "node_modules/firebase-functions/lib/common/trace.js". Dependency Trace: numbered_headings/ui/modules/page_hidden.cljs numbered_headings/update.cljs numbered_headings/server/log.cljs node_modules/firebase-functions/lib/logger/index.js node_modules/firebase-functions/lib/common/trace.js Searched for npm packages in: /Users/priyanka.gupta/sde/development/numbered-headings-cloud/node_modules See:

thheller 2025-03-27T18:15:43.998819Z

that is also a node only dependency not available in the browser

thheller 2025-03-27T18:16:48.514299Z

are you actually running in the browser? seems like you use a lot of packages intended for node?

Priyankaa 2025-03-27T18:24:06.431589Z

yes its on browser and also some part in BE - below is the shadow-cljs.edn -`{: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"}}} :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 [numbered-headings.ui.modules.space] :init-fn numbered-headings.ui.modules.space/init :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-03-27T18:25:44.929229Z

ok, so I'm guessing this node part isn't actually supposed to be in the browser then? only in the :functions build?

Priyankaa 2025-03-27T18:26:10.882419Z

yes true

thheller 2025-03-27T18:26:42.649169Z

numbered_headings/server/log.cljs this too sounds like its meant for the server, but is somewhere included by the :app build

Priyankaa 2025-03-27T18:28:55.495849Z

Yes - This ClojureScript file is responsible for structured logging on the server-side (Node.js) using Firebase Functions' logging API. I

thheller 2025-03-27T18:29:14.888469Z

so then don't include it in the :app files and you should be good

thheller 2025-03-27T18:29:34.715579Z

numbered_headings/update.cljs required it, maybe accidentally

👀 1
Priyankaa 2025-03-27T18:36:27.125799Z

:app {:target :browser :ns-exclude-regexp #"^numbered-headings\.server\..*" ;; <--- Exclude server code -- is this the correct syntax to exclude server folder?

thheller 2025-03-27T18:37:33.176719Z

that is not an option that exists or has ever existed

thheller 2025-03-27T18:37:59.708279Z

only the code that you require is actually included, so you need to remove that require in the namespace

Priyankaa 2025-03-27T18:44:19.740559Z

if i remove the require namespaces like ["firebase-functions" :as functions] or ["firebase-functions/logger" :as logger] from server.cljs or update.cljs then GCP cloud function will stop working

thheller 2025-03-27T18:44:37.645529Z

that is not the require I'm talking about

thheller 2025-03-27T18:44:47.347469Z

Dependency Trace:
	numbered_headings/ui/modules/page_hidden.cljs
	numbered_headings/update.cljs
	numbered_headings/server/log.cljs
	node_modules/firebase-functions/lib/logger/index.js
	node_modules/firebase-functions/lib/common/trace.js

thheller 2025-03-27T18:45:03.713469Z

this is telling you that numbered_headings/update.cljs is requiring numbered_headings/server/log.cljs

thheller 2025-03-27T18:45:39.882369Z

I'm guessing that the server.log thing is intended only for the server

thheller 2025-03-27T18:46:03.320479Z

so in numbered_headings/update.cljs you remove the require to numbered-headings.server.log

thheller 2025-03-27T18:47:25.556679Z

I don't know what any of your code does, so this you have to figure out on your own

thheller 2025-03-27T18:48:30.666359Z

could be that numbered_headings/ui/modules/page_hidden.cljs isn't supposed to require the update ns, no clue

Priyankaa 2025-03-28T06:37:29.633669Z

it is resolved now .. thanks a lot for helping.!!