Skip to content
Kezdőlap » Error while updating property ‘fontSize’ in shadow node of type: RCCText

Error while updating property ‘fontSize’ in shadow node of type: RCCText

Gyönyörű szép hibaüzenet :). Látszik, hogy valami a betűméret körül lehet. És igen. Kicsit utánaolvastam és a hiba arra vezethető vissza, hogy a kódban valahol a betűméretet nem számmal, hanem szöveggel adtam meg.

Ez annyira „szép” hiba, hogy bele is tettem a „Hibák és megoldások” csoportba.

Android most a szűk keresztmetszet

A hibával akkor találkoztam, amikor az appot iOS után egy Samsung telón teszteltem. Az app elindult, aztán szó szerint felvillant a piros hibaképernyő, majd crash-elt az Expo Go a telón. Épphogy sikerült elkapnom a hibát, mert a konzolban nem jelent meg:

Error while updating property 'fontSize' in shadow node of type: RCCText

Tehát az iOS rendszer le tudta kezelni, az Android azonban már szigorúbb volt. Lehetne vitatkozni, hogy melyik a jobb, de inkább ne menjünk bele. Az iOS is szokott hisztizni olyanon, amin az Android viszont nem.

Megoldás

Nem kell a sok rizsa, leírom hogyan oldottam meg a dolgot. Rákerestem az összes általam készített fájlban (kihagyva a node_modules könyvtárat!), hogy vajon hol használtam a „font-size”, „size”, „fontSize” szavakat.

A találatok közül elsősorban azok érdekeltek, ahol valóban a betűtípust adtam meg. Rá is bukkantam néhány helyen arra, hogy egy általam készített Icon komponens paraméterezésénél valóban sztringként adtam meg a betűméretet:

<Icon
    iconFamilyName="MaterialCommunityIcons"
    name="account-edit"
    size=<strong>"24"</strong>
    color={colors.ui.darkIceBlue}
/>

Helyesen így kellett volna megadni:

size={24}

Javítottam, azonban az első próbálkozásom sikertelen volt, mert az app változatlanul dobta a hibát, majd szerényen összeomlott. Ugyanis nem voltam elég alapos, és nem javítottam ki mindenhol. Aztán amint az összes helyen átírtam, megszűnt a hiba és az Android is abbahagyta a hisztit :).

Tanulság

Az egészből azt a következtetést vontam le, hogy

  • Érdemes egy fejlesztést azonnal tesztelni mindkét rendszeren (iOS, Android).
  • Amit számként kell megadni azt ne sztringként adjuk át!
  • A fenti malőrt talán elkerülhettem volna, ha az értéket kiemelem mondjuk egy metrics.js fájlba, ahol az összes olyan méretezést tárolom, amit az appon belül használok. Ezt utólag meg is tettem, így a kódban már így néz ki:
size={metrics.fontSize24}

A metrics.js-ből a részlet pedig értelem szerűen így fest (de ez csak egy példa, lehet tömbben vagy objektumban is megadni a többi mérettel együtt):

const fontSize24 = 24;

Forrás

Azért mellékelem azt a linket is, ami a megoldásban segített.