A styled-components csomag telepítése során kaptam egy szép hosszú hibaüzenetet: „unable to resolve dependency tree”…

Megoldás
A megoldásban sokat segített a hibaüzenet elemzése, ahol is azt írják, hogy „Fix the upstream dependency conflict, or retry this command with –force, or –legacy-peer-deps„.
Magyarul ki kellene próbálni a telepítő parancsot valamelyik kapcsoló használatával.
Nosza rá is kerestem a neten, hogy biztosra menjek, és egy helyen a –legacy-peer-deps kapcsolót javasolták. Tehát így kellett telepítenem:
npm install --save styled-components --legacy-peer-deps
Látszólag megoldott a dolog azonban további csomagok telepítése ismét hasonló hibát produkált.
React 18 eset
Ha a hiba makacsul tartja magát, vagy ismét előjön, akkor annak oka az is lehet, hogy a styled-components, vagy annak valamelyik dependenciája nem teljesen kompatibilis a React legújabb 18-as verziójával. Ugyanis egy vadonat új React / ReactNative projekt telepítése, már a React 18-as verzióját fogja használni.
Az egyik megoldás erre az, hogy visszafelé frissítünk (downgrade) a React 17-esnek a legutolsó stabilan működő verziójára. Ez pedig, ha megnézzük például egy előző projektben a package.json fájlban a függőségek között, akkor látjuk, hogy a 17.0.2:
"dependencies": {
"react": "17.0.2",
"react-dom": "17.0.2",
},
Ezt a verziót kell tehát megcélozni azzal, hogy a package.json fájlban manuálisan átírjuk erre a react és a react-dom sorát, békén hagyva a többi függőséget:
"dependencies": {
"react": "^17.0.2",
"react-dom" : "^17.0.2"
},
A verzió szám elé írt kis kalap (^) fogja azt jelenteni az npm csomagkezelő számára, hogy bármi legyen is, sziklaszilárdan a 17.0.2-es verzióhoz ragaszkodunk. Az átírás után még hátra van egy
npm install
parancs kiadása a konzolban.
Ez a megoldás célravezető lehet. Na de haladjunk már a korral kérem szépen! Ugyanis mi van, ha én ragaszkodom a legfrissebb React-hoz, ami jelen pillanatban a 18-as verzió?
A guglival (mert Ő az én barátom is :)) kutatva akadtam az egyik hozzászólásban egy olyan mondatra, amiben valaki azt írta, hogy a Yarn csomagkezelővel telepítve nem jelentkezik a hiba.
Ez a varázsmondat szinte angyali harsonaként csengett a fülemben. Rögtön kipróbáltam és azt kell mondjam igaz. Végül ez adta az ihletet ahhoz a poszthoz, amiben röviden leírom, hogy Isten véled NPM, légy üdvözölve Yarn. Ez persze azért nem teljesen igaz, mert nem szakítottam végleg az NPM-el, csupán a Yarn-t használom eztán a projektek telepítéséhez.
Másrészt pedig azért is maradt az NPM a gépemen, ugyanis a Yarn doksija is azt javasolta, hogy az npm csomagkezelővel telepítsem a Yarn-t :).
(Erről a saját farkába harapó kígyó jutott eszembe, de nem tettem fel róla képet, mert ez sok helyen az ördög szimbóluma.)