I'm having issues using the vega-embed library from npm with shadow-cljs that I would like some help with. I will put all the details of my problem in a thread so it doesn't get too noisy.
In my package.json I have the following dependencies declared
"dependencies": {
...
"vega": "5.20.0",
"vega-embed": "6.17.0",
"vega-lite": "5.0.0"
...
}
When the application starts up, these warnings show up in the browser console
as soon as the application loads.
shadow-cljs - failed to load module$node_modules$d3_array$dist$d3_array js.js:74:16
shadow-cljs - failed to load module$node_modules$vega_format$build$vega_format js.js:74:16
shadow-cljs - failed to load module$node_modules$vega_loader$build$vega_loader js.js:74:16
shadow-cljs - failed to load module$node_modules$vega_dataflow$build$vega_dataflow js.js:74:16
shadow-cljs - failed to load module$node_modules$vega$build$vega_node js.js:74:16
shadow-cljs - failed to load module$node_modules$vega_embed$build$vega_embed
In my cljs code, I'm attempting to use the vega library like this.
(ns components.charts.vega-chart
(:require
;; ...
["vega-embed" :as vega-embed]))
;; later in the namespace
(vega-embed/embed node spec options)
The value of vega-embed
is an empty javascript object. The problem seems to be occuring before I even get to exectue this code.
If I evaluate any of my cljs code that makes use of vega-embed
I get a bunch of errors that all trace back to the vega code not being loaded (nils, not a function, etc)
Would anyone be able to help me get to the bottom of this?Damn. Everytime I sit down and write up a big question for slack I find a solution right after.
Adding :output-feature-set :es6
to my shadow-cljs :compiler-options
map fixed this for me. I got the idea from this post https://stackoverflow.com/questions/64461818/require-aws-amplify-v-3-amplify-and-auth-classes-in-clojurescript-reagent-shadow
@azzurite “as simple as possible” sounds like you’re on the good path 🙂