<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Clojure Q&amp;A - Recent questions tagged dependencies</title>
<link>https://ask.clojure.org/index.php/tag/dependencies</link>
<description></description>
<item>
<title>clojure-clr nrepl - .NET Standard 2.1. does not work with .NET 7</title>
<link>https://ask.clojure.org/index.php/12954/clojure-clr-nrepl-net-standard-2-1-does-not-work-with-net-7</link>
<description>&lt;p&gt;I've been encountering some issues when attempting to load libraries using clojure-clr in .NET 7 (core.async and clojure.tools.nrepl)&lt;/p&gt;
&lt;p&gt;With the recent inclusion of NREPL, I was keen to explore its functionality. However, I'm met with an error when I try to require the namespace, stating:&lt;/p&gt;
&lt;p&gt;&quot;Could not locate clojure/tools/nrepl with extensions .cljr, .cljc, .cljr, .cljr.dll, .cljc.dll, or .clj.dll on load path.&quot;&lt;/p&gt;
&lt;p&gt;It's interesting to note the distinction between the clojure-clr nrepl library and core.async, particularly in comparison to libraries like clojure.test.generative. The latter, for example, is compiled to .NET Standard 2.1 and functions correctly.&lt;/p&gt;
&lt;p&gt;To aid in addressing this problem, I've created a repository which reproduces the nrepl bug. You can find it here: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Dangercoder/clojure-clr-bug-report-1&quot;&gt;https://github.com/Dangercoder/clojure-clr-bug-report-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I'm using dotnet tooling to manage dependencies.&lt;/p&gt;
&lt;p&gt;Furthermore, I believe that resolving the issues with core.async is crucial since it would enable interoperability with &lt;a rel=&quot;nofollow&quot; href=&quot;https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task?view=net-7.0&quot;&gt;https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task?view=net-7.0&lt;/a&gt;. This feature is prevalent throughout the .NET environment.&lt;/p&gt;
&lt;p&gt;Your assistance and input are much appreciated!&lt;/p&gt;
</description>
<category>ClojureCLR</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12954/clojure-clr-nrepl-net-standard-2-1-does-not-work-with-net-7</guid>
<pubDate>Mon, 22 May 2023 18:59:50 +0000</pubDate>
</item>
<item>
<title>first build fails on ubuntu due to repo1.maven.org/maven2 timing out for orr.clojure artifact</title>
<link>https://ask.clojure.org/index.php/12753/first-build-fails-ubuntu-repo1-maven2-timing-clojure-artifact</link>
<description>&lt;p&gt;clj command fails to build classpath on new installation!!!&lt;/p&gt;
&lt;p&gt;Running a new installation of POP os, which is a late ubuntu derivative. I've run into this issue on my m1 mac as well. However, after removing the .m2 homedir the problem was solved. But on linux the issue persists.&lt;/p&gt;
&lt;p&gt;using adopt temurin 17 jdk + jre&lt;/p&gt;
&lt;p&gt;clj version: 1.11.1&lt;/p&gt;
&lt;p&gt;all install steps followed from the docs were successful without issues. until you run clj or clojure from cli. The following trace is produced:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Error building classpath. Failed to read artifact descriptor for org.clojure:clojure:jar:1.11.1
org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.clojure:clojure:jar:1.11.1
	at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:255)
	at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:171)
	at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:263)
	at clojure.tools.deps.extensions.maven$read_descriptor.invokeStatic(maven.clj:115)
	at clojure.tools.deps.extensions.maven$fn__1155.invokeStatic(maven.clj:143)
	at clojure.tools.deps.extensions.maven$fn__1155.invoke(maven.clj:143)
	at clojure.lang.MultiFn.invoke(MultiFn.java:244)
	at clojure.tools.deps$expand_deps$children_task__773$fn__775$fn__776.invoke(deps.clj:405)
	at clojure.tools.deps.util.concurrent$submit_task$task__481.invoke(concurrent.clj:35)
	at clojure.lang.AFn.call(AFn.java:18)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;the lead error causing the above trace is the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Caused by: org.apache.http.conn.ConnectTimeoutException: Connect to repo1.maven.org:443 [repo1.maven.org/151.101.60.209] failed: Connect timed out
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Running clj  -Sforce after removing the .m2 dependencies yields the same result. Checking with other tools it seems that &lt;code&gt;https://repo1.maven.org/maven2&lt;/code&gt; is not reachable. I can't confirm if it is unreachable for others outside of my location. However the fact that removing and force-reinstalling deps on my mac worked tells me that something can be done to reoslve the issue. just not sure what.&lt;/p&gt;
&lt;p&gt;Any help appreciated.&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12753/first-build-fails-ubuntu-repo1-maven2-timing-clojure-artifact</guid>
<pubDate>Sun, 12 Mar 2023 08:48:39 +0000</pubDate>
</item>
<item>
<title>How to fix error 'could not acquire write lock for 'artifact:org.bytedeco:opencv:4.5.5-1.5.7' ?</title>
<link>https://ask.clojure.org/index.php/12730/error-could-acquire-write-lock-artifact-org-bytedeco-opencv</link>
<description>&lt;p&gt;depes.edn:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps {org.deeplearning4j/deeplearning4j-nlp {:mvn/version &quot;1.0.0-M2.1&quot;}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It happened before in an older Clojure version, but disappeared, see here:&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://clojurians-log.clojureverse.org/tools-deps/2021-09-16&quot;&gt;https://clojurians-log.clojureverse.org/tools-deps/2021-09-16&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now I have it back with a recent clojure CLI:&lt;br&gt;
1.11.1.1200&lt;/p&gt;
&lt;p&gt;The workarround is still to limit the number of download threads;&lt;/p&gt;
&lt;p&gt; clj -Sthreads 1&lt;/p&gt;
&lt;p&gt;So it only happens to me using (the default) multi-threaded downloading.&lt;/p&gt;
</description>
<category>tools.deps</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12730/error-could-acquire-write-lock-artifact-org-bytedeco-opencv</guid>
<pubDate>Mon, 06 Mar 2023 14:25:23 +0000</pubDate>
</item>
<item>
<title>Add validation for lib groupId and name coordinate of git deps in tools.deps</title>
<link>https://ask.clojure.org/index.php/12147/add-validation-for-groupid-name-coordinate-deps-tools-deps</link>
<description>&lt;p&gt;In tools.deps, when using git deps, the following declared dependencies:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{io.github.xadecimal/riddley {...}}

{com.github.xadecimal/riddley {...}}

{com.xadecimal/riddley {:git/url &quot;https://github.com/xadecimal/riddley.git&quot; ...}}

{com.xadecimal/riddley {:mvn/version ...}}

{garbage/whatever {:git/url &quot;https://github.com/xadecimal/riddley.git&quot; ...}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;will all resolve, but they will not conflict against one another, even though they are all the same lib.&lt;/p&gt;
&lt;p&gt;As it stands, the consumer that declares the dependency can choose from all these equivalent declarations, but if it chooses differently than any of its transitive dependencies have chosen, a hidden conflict is created, and more than one version of the lib will be pulled into the classpath, giving non-deterministic behavior to what version of the code will actually be used at runtime.&lt;/p&gt;
&lt;p&gt;This problem could be solved by letting the lib author choose the canonical lib group/name that users must use always when declaring a dependency on it.&lt;/p&gt;
&lt;p&gt;This can be achieved by adding a new key to &lt;code&gt;deps.edn&lt;/code&gt;, such as &lt;code&gt;:lib&lt;/code&gt; which takes a fully qualified symbol which will be validated against the symbol declared in the &lt;code&gt;:deps&lt;/code&gt; map of the consuming libs.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;deps.edn&lt;/code&gt; of the library being depended upon:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:lib com.xadecimal/riddley ;; &amp;lt;-- This new key is added to deps.edn, declaring the canonical lib name
 :paths [&quot;src&quot;]
 :deps {...}
 ...}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;deps.edn&lt;/code&gt; of the libraries that declare a dependency on the above lib:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:paths [&quot;src&quot;]
 :deps {com.xadecimal/riddley {...}}
 ...}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When tools.deps resolves the above, it will check if the pulled lib has &lt;code&gt;:lib&lt;/code&gt; key declared in its &lt;code&gt;deps.edn&lt;/code&gt;, if it does, it will assert that the symbol used here matches the declared &lt;code&gt;:lib&lt;/code&gt; symbol, if it does not, it will error to the user, making this an illegal dependency declaration. In the above it is correct, but in the following it is wrong:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;deps.edn&lt;/code&gt; of a library that badly declared an illegal dependency on the above lib:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:paths [&quot;src&quot;]
 :deps {com.github.xadecimal/riddley {...}}
 ...}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This would error, because even if the library is found at &lt;code&gt;github.com/xadecimal/riddley.git&lt;/code&gt; and thus the above resolves, the library at &lt;code&gt;github.com/xadecimal/riddley.git&lt;/code&gt; declared that its canonical lib name was &lt;code&gt;com.xadecimal/riddley&lt;/code&gt; and not &lt;code&gt;com.github.xadecimal/riddley&lt;/code&gt;. Therefore, in this case the only valid git dependency declaration is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:paths [&quot;src&quot;]
 :deps {com.xadecimal/riddley {:git/url &quot;https://github.com/xadecimal/riddley.git&quot; ...}}
 ...}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This validation would follow a similar ideology to asserting that the git/tag matches the git/sha, by asserting that the lib name used matches what the lib expects to uniquely be identified by.&lt;/p&gt;
&lt;p&gt;Doing this allows conflict resolution to work as expected, and avoids the possibility that transitive dependencies use a different name, causing hidden runtime version conflicts not detected and resolved by tools.deps.&lt;/p&gt;
</description>
<category>Clojure CLI</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/12147/add-validation-for-groupid-name-coordinate-deps-tools-deps</guid>
<pubDate>Mon, 05 Sep 2022 02:56:53 +0000</pubDate>
</item>
<item>
<title>Will tools.build be released as a jar?</title>
<link>https://ask.clojure.org/index.php/11433/will-tools-build-be-released-as-a-jar</link>
<description>&lt;p&gt;I am developing a library with a dependency on tools.build and I would like to publish it as a jar.  Whilst tools.build is only available as a git dep, I cannot include it as a dependency in my pom file.  A wider discussion on this topic was held on this &lt;a rel=&quot;nofollow&quot; href=&quot;https://clojurians.slack.com/archives/C6QH853H8/p1641381677207800&quot;&gt;slack thread&lt;/a&gt;, where @alexmiller requested that I raise this topic here.&lt;/p&gt;
</description>
<category>tools.build</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11433/will-tools-build-be-released-as-a-jar</guid>
<pubDate>Wed, 05 Jan 2022 15:02:43 +0000</pubDate>
</item>
<item>
<title>tools.deps - How do I list dependencies and their versions from the REPL?</title>
<link>https://ask.clojure.org/index.php/11268/tools-deps-how-list-dependencies-and-their-versions-from-repl</link>
<description>&lt;p&gt;I want to check which version of some dependencies I have loaded in the project from the REPL. Can it be done? How do I do this, if so?&lt;/p&gt;
&lt;p&gt;The project I am working with is started via a rather involved script, making it a bit hard to know what version of certain dependencies are eventually loaded. I am thinking that once I have a REPL, then I have the truth. &lt;/p&gt;
&lt;p&gt;It's a tools.deps project&lt;/p&gt;
</description>
<category>REPL</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/11268/tools-deps-how-list-dependencies-and-their-versions-from-repl</guid>
<pubDate>Thu, 11 Nov 2021 11:47:04 +0000</pubDate>
</item>
<item>
<title>Problem whilst requiring clojure clojure.data.csv :as csv</title>
<link>https://ask.clojure.org/index.php/10011/problem-whilst-requiring-clojure-clojure-data-csv-as-csv</link>
<description>&lt;p&gt;I'm learning clojure trought the book &quot;The Clojure Wokshop - Packt&quot; and i have stucked for a few days in this exercise:&lt;/p&gt;
&lt;p&gt;(My IDE is IntelliJ and i'm using Windows).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exercise 4.10: Importing Data from a CSV File&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Create a folder somewhere convenient on your computer.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I decided to create an entirely new project given how many attempts i tried.&lt;/p&gt;
&lt;p&gt;Is there any difference here while choosing between Leiningen or Deps? I most of the time use Leiningen, but should i use Deps because i am gonna use a deps.edn file?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/oPf6n.png&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Download the match_scores_1991-2016_UNINDEXED.csv file to the folder you created. (&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/PacktWorkshops/The-Clojure-Workshop/tree/master/Chapter04/tennis-data&quot;&gt;here on github&lt;/a&gt;)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;But where should i download this file? Into the src file inside the project file or any file works? Is there any difference?&lt;/p&gt;
&lt;p&gt;I decided to save inside de src.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/Mupvy.png&quot; alt=&quot;print&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. In your editor, in the same folder, create a deps.edn file with the following contents:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps
 {org.clojure/data.csv {:mvn/version &quot;0.1.4&quot;}
  semantic-csv {:mvn/version &quot;0.2.1-alpha1&quot;}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So, i created a deps.edn file.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/BTGn8.png&quot; alt=&quot;deps.edn&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Verify that everything is working by evaluating the following expression in your REPL:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;user&amp;gt; (require '[clojure.data.csv :as csv])
nil
user&amp;gt; (require '[clojure.java.io :as io])
nil
user&amp;gt; (with-open [r (io/reader &quot;match_scores_1991-2016_unindexed_csv.csv&quot;)]
         (first (csv/read-csv r)))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When creating the REPL, should I select &quot;Run with Intellij project classpath&quot;, right? &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/1ZTvirB.png&quot; alt=&quot;https://i.imgur.com/1ZTvirB.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;But when i am gonna evaluate the testing expressions, it shows an error while evaluating the second one and third one.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.stack.imgur.com/E4T30.png&quot; alt=&quot;error&quot;&gt;&lt;/p&gt;
&lt;p&gt;The error while evaluating the &quot;clojure.data.csv :as csv&quot; is this one:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Execution error (FileNotFoundException) at csv-example.core/eval1549 (form-init2604783929697477049.clj:1).
Could not locate clojure/data/csv__init.class, clojure/data/csv.clj or clojure/data/csv.cljc on classpath.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What am i missing? Have been trying for days to solve this but i didn't found any answer.&lt;/p&gt;
&lt;p&gt;Thank you!&lt;/p&gt;
</description>
<category>REPL</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/10011/problem-whilst-requiring-clojure-clojure-data-csv-as-csv</guid>
<pubDate>Tue, 05 Jan 2021 21:25:07 +0000</pubDate>
</item>
<item>
<title>how to require clojure libs as classes instead of clj file to reduce repl start up time during development?</title>
<link>https://ask.clojure.org/index.php/9681/require-clojure-classes-instead-reduce-during-development</link>
<description>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;i read about &lt;a rel=&quot;nofollow&quot; href=&quot;http://%20https://clojure.org/guides/dev_startup_time&quot;&gt;reducing repl start up time during dev&lt;/a&gt;  and tried to apply these knowledge to start REPL using Leiningen (in the article Alex shows this practice using deps.edn).&lt;/p&gt;
&lt;p&gt;My steps:&lt;/p&gt;
&lt;p&gt;I overrided clojure.core/load var to track time elapsed on loading module with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(alter-var-root #'clojure.core/load (fn [origin-fn]
                                  (if (get (meta origin-fn) ::track-load?)
                                    origin-fn
                                    (vary-meta (fn [&amp;amp; args]
                                                 (let [start# (System/nanoTime)
                                                       ret# (apply origin-fn args)
                                                       elapsed-ms# (/ (double (- (System/nanoTime) start#)) 1000000.0)]
                                                   (newline)
                                                   (pr {:args (vec args)
                                                        :ms   elapsed-ms#})
                                                   (newline)
                                                   ret#))
                                               merge
                                               {::track-load? true}))))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I noticed that loading core clojure parts takes time ~0.10-0.20 ms and loading third party libs modules (cheshire for example) , takes ~200-400ms.&lt;/p&gt;
&lt;p&gt;As i understand,  main idea of reducing REPL start up time  is the priority of compiled class before clj module if  clj module was not changed. So we can compile third party libs and get benefit of not parsing their clj files but use their compiled classes.&lt;/p&gt;
&lt;p&gt;I compiled all clojure files (my and libs) via leiningen uberjar and added folder with compiled class files to :checkout-deps-shares, i guess it is a way to add folder with class files to classpath:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:checkout-deps-shares [:source-paths :test-paths
                     ~(fn [p] (str (:root p) &quot;/target/uberjar/classes/*&quot;))]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then i restarted repl, overrided clojure.core/load to track modules load time and as experiment do following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(time (require 'runtime.account :reload-all))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;where runtime.account is one of my root modules.&lt;/p&gt;
&lt;p&gt;As a result i cannot see any difference in loading time of third party libs modules :/.&lt;/p&gt;
&lt;p&gt;Maybe you can give me some details about mechanism deciding to load class file or clj file and some way to monitor that activity?&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
</description>
<category>REPL</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9681/require-clojure-classes-instead-reduce-during-development</guid>
<pubDate>Sat, 03 Oct 2020 07:32:25 +0000</pubDate>
</item>
<item>
<title>Lein repl error: As of 2.8.2, the repl task is incompatible with Clojure versions older than 1.7.0.</title>
<link>https://ask.clojure.org/index.php/9599/lein-repl-error-incompatible-with-clojure-versions-older-than</link>
<description>&lt;p&gt;I am trying to work through an example in the Clojure Workshop. I created a folder and in that included the following &lt;code&gt;project.clj&lt;/code&gt; file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(defproject learncsv &quot;1.0.0-SNAPSHOT&quot;
 :dependencies [[org.clojure/data.csv &quot;1.0.0&quot;]
             [semantic-csv &quot;0.2.1-alpha1&quot;]])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, I went to the terminal and typed &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lein repl
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I got the following error:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated 

in JDK 13 and will likely be removed in a future release.
As of 2.8.2, the repl task is incompatible with Clojure versions older than 1.7.0.
You can downgrade to 2.8.1 or use `lein trampoline run -m clojure.main` for a simpler 
 fallback repl.
Subprocess failed (exit code: 1)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I am super new to clojure. Never included any dependencies. Would really appreciate any help. &lt;/p&gt;
&lt;p&gt;Edit: If I run &lt;code&gt;lein repl&lt;/code&gt; in a folder that does not have any project.clj then it starts fine. And, it shows my clojure version as 1.10. So I am not sure why the error seems to suggest that I am using Clojure version older than 1.7.0&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
</description>
<category>REPL</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/9599/lein-repl-error-incompatible-with-clojure-versions-older-than</guid>
<pubDate>Fri, 11 Sep 2020 23:06:45 +0000</pubDate>
</item>
<item>
<title>Compiling shadow-cljs projects with NPM transitive dependency conflicts</title>
<link>https://ask.clojure.org/index.php/8665/compiling-shadow-projects-transitive-dependency-conflicts</link>
<description>&lt;p&gt;I am attempting to make use of the &lt;code&gt;react-bootstrap&lt;/code&gt; module by leveraging NPM support in &lt;code&gt;shadow-cljs&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;First I add &lt;code&gt;react-bootstrap&lt;/code&gt; and &lt;code&gt;bootstrap&lt;/code&gt; to &lt;code&gt;package.json&lt;/code&gt;:&lt;br&gt;
&lt;code&gt;$ yarn add react-bootstrap bootstrap&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And then require &lt;code&gt;react-bootstrap&lt;/code&gt; in my project:&lt;br&gt;
&lt;code&gt;(ns myproject.core
  (:require [&quot;react-bootstrap&quot; :as bs]))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The result is a runtime exception in the console:&lt;br&gt;
&lt;code&gt;TypeError: (0 , _uncontrollable.default) is not a function&lt;/code&gt;&lt;br&gt;
... which curiously goes away after the first hot-reload.&lt;/p&gt;
&lt;p&gt;The exception likely indicates a conflict in a nested NPM dependency. How can I identity and resolve the problem?&lt;/p&gt;
</description>
<category>ClojureScript</category>
<guid isPermaLink="true">https://ask.clojure.org/index.php/8665/compiling-shadow-projects-transitive-dependency-conflicts</guid>
<pubDate>Thu, 26 Sep 2019 18:08:41 +0000</pubDate>
</item>
</channel>
</rss>