Reagent doesn’t work after updating dependencies.
If you see errors about accessing
ReactDOM object or some React method after you have updated your dependencies, the problem is probably conflicting
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
:exclusion [cljsjs/react cljsjs/react-dom]to problematic dependencies, so only Reagent will have transitive dependency on React packages
- Add direct
cljsjs/react-domdependencies to your project, which will override any transitive dependencies
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