Reagent doesn't work after updating dependencies.
If you see errors about accessing React
or ReactDOM
object or some React method after you have updated your dependencies, the problem is probably conflicting cljsjs/react
or cljsjs/react-dom
versions. Other dependencies than Reagent might bring in versions which don't work with Reagent, or a library which only depends on one of the packages might cause React and ReactDOM versions to conflict.
To fix this you should check lein deps :tree
or boot show -d
, and check which version of Cljsjs React packages you have.
There are three alternative solutions:
- Update all the packages that require Cljsjs React packages to use same (or compatible) versions as Reagent
- Add
:exclusion [cljsjs/react cljsjs/react-dom]
to problematic dependencies, so only Reagent will have transitive dependency on React packages - Add direct
cljsjs/react
andcljsjs/react-dom
dependencies to your project, which will override any transitive dependencies
Note: cljsjs/react-dom-server
package is deprecated but Reagent still depends on empty package for compatibility.
Note: For more information on how Leiningen and Boot resolve dependencies using Maven-resolver, read: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html