Javascript hibák és azok javítása


Maga a lista előtt nézzük gyorsan a hiba struktúráját. A struktúra megértése segít megérteni a hibákat, és kevesebb problémát tapasztal, ha olyan hibákat talál, amelyek nem szerepelnek a listán.







A Chrome tipikus hibája így néz ki:

Most maguknak a hibáknak.

Uncheught TypeError: az undefined nem függvény


Kapcsolódó hibák: a szám nem egy függvény, a szöveg nem függvény, Nem kezelt hiba: "foo" nem függvény, várható függvény

Megtörténik, amikor egy értéket függvényként hívnak le, ha az érték nem funkció. Például:


Ez a hiba általában akkor fordul elő, ha egy objektumhoz tartozó függvényt megpróbál hívni, de a név be van zárva.


Az objektum nem létező tulajdonságai alapértelmezés szerint nem definiáltak. ami e hibához vezet.

Más változatok, például "szám nem funkció", akkor fordul elő, amikor megpróbál hívni egy számot, mintha egy függvény lenne.

A hiba kijavítása: győződjön meg róla, hogy a függvény neve helyes. Erre a hibára a sor száma általában a megfelelő helyre mutat.

Uncaught ReferenceError: Érvénytelen baloldali feladat a hozzárendelésben


Kapcsolódó hibák: Uncheught exception: ReferenceError: Nem lehet hozzárendelni a 'functionCall () függvényhez, Uncaught exception: ReferenceError: Nem lehet hozzárendelni a' this '

Ennek oka egy olyan érték hozzárendelése, amely nem rendelhető hozzá értékhez.

Ennek a hibának a leggyakoribb példája az, ha:


Ebben a példában a programozó véletlenül kettő helyett egy egyenlő jelet használt. A "baloldali hozzárendelés" kifejezés az egyenlő jel bal oldalára utal, és amint ez a példában is látható, a bal oldali olyan elemet tartalmaz, amelyhez nem rendelhető érték, ami hibához vezet.

A hiba kijavítása: győződjön meg róla, hogy nem próbál meg értéket hozzárendelni egy funkció eredményhez vagy ehhez a kulcsszóhoz.

Uncheught TypeError: Kör alakú szerkezet átalakítása JSON-ba


Kapcsolódó hibák: Uncheught exception: TypeError: JSON.stringify: Nem egy aciklikus objektum, TypeError: ciklikus objektum érték, a körjegyzék érték argumentum nem támogatott

Az objektum körkörös referenciája mindig a JSON.stringify-be kerül.


Mivel a fenti példában a és b hivatkozik egymásra, az így létrejövő objektum nem hajtható végre a JSON-ba.

A hiba kijavítása: a fenti példában leírtak szerint távolítsa el a JSON-ba konvertálni kívánt objektumokat.

Váratlan jelző;


Kapcsolódó hibák: Várható) hiányzik az argumentumlistán

A hiba jelzője eltérő lehet - írható a "Váratlan jel", "Várható"

A hiba kijavítása: a vonalszám néha nem jelzi a megfelelő helyet, ami megnehezíti a hiba kijavítását.

Hiba történt [] <> () általában egy nem illeszkedő pár okozza. Ellenőrizze, hogy zárójelének összes zárójele van-e. Ebben az esetben a sor száma általában valami másra mutat, nem pedig a probléma szimbólumára.

Váratlan / összefüggés van a rendszeres kifejezésekkel. Az ügy sorszáma általában helyes.

váratlan; általában szimbólum okozta; az objektum literál vagy tömb belsejében, vagy a függvényhívás argumentumainak listája. A sor száma általában szintén helyes ebben az esetben.







Uncaught SyntaxError: Váratlan jelenség ILLEGAL


Kapcsolódó hibák: Unterminated String Literal, Invalid Line Terminator

A karakterláncban a záró idézet elmarad.

A hiba kijavítása: győződjön meg róla, hogy minden sor rendelkezik a megfelelő záró idézettel.

Uncaught TypeError: Nem olvasható a "null" tulajdonság, 'null', Uncaught TypeError: Nem olvasható az 'foo'


Kapcsolódó hibák: TypeError: someVal null, Nem lehet elérni a "foo" tulajdonságot a nem definiált vagy null hivatkozással

Olyan próbálkozás, hogy null vagy nem definiált legyen, mintha tárgy lenne. Például:


A hiba kijavítása: általában a helyesírási hibák miatt. Ellenőrizze, hogy a sor mellett használt összes változó helyesen szerepel-e.

Uncheught TypeError: Nem állítható be a 'null' tulajdonság, 'null', Uncaught TypeError: Nem lehet beállítani az 'foo' tulajdonságot, amely nem definiált


Kapcsolódó hibák: TypeError: someVal undefined, Nem definiálható vagy "null" tulajdonság "foo" tulajdonsága

Próbáljon null vagy nem definiáltat írni, mintha tárgy lenne. Például:


A hiba kijavítása: ezt általában hibák okozzák. Ellenőrizze a hibát jelző sor melletti változó neveket.

Hibaelhárítatlan tartomány hibája: a hívások maximális hányadát meghaladó maximális méret


Kapcsolódó hibák: Megakadályozatlan kivétel: Tartomány hiba: Maximális rekurziós mélység túllépése, túl sok rekurzió, Stack túlcsordulás

Általában a helytelen programlogika okozza, ami a rekurzív függvény végtelen hívásához vezet.

A hiba kijavítása: ellenőrizze a rekurzív függvényeket azon hibák miatt, amelyek kényszeríthetik a rekurzív hívásokat örökre.

Uncaught URIError: Az URI rendellenes


Kapcsolódó hibák: URIError: hibás URI-sorrend

A hibás hívás a decodeURIComponenthez vezet.

A hiba kijavítása: győződjön meg róla, hogy a hiba sorában a decodeURIComponent hívja a helyes bemenetet.

Az XMLHttpRequest nem tölthet be néhány / url fájlt. Nincs hozzáférésvezérlő-engedéllyel-származási fejléc a keresett erőforráson


Kapcsolódó hibák: Cross-Origin kérés letiltva: ugyanaz

Ez a probléma mindig az XMLHttpRequest használatával függ össze.

A hiba kijavítása: győződjön meg róla, hogy a helyes URL helyes-e, és megfelel-e az azonos származási házirendnek. A hibakód megtalálásának jó módja az, ha megnézzük a hibaüzenet URL-címét, és megkeressük a kódot.

InvalidStateError: Megpróbáltunk olyan objektumot használni, amely nem vagy már nem használható


Kapcsolódó hibák: InvalidStateError, DOMException kód 11

Ez azt jelenti, hogy a kód olyan funkciónak nevezhető, amely nem hívható meg a jelenlegi állapotban. Általában az XMLHttpRequest-hez van társítva, amikor megpróbálja felhívni a funkciókat addig, amíg készen van.


Ebben az esetben hibát kap, mert a setRequestHeader funkció csak az xhr.open hívása után hívható meg.

A hiba kijavítása: nézze meg a hibát jelző sorban lévő kódot, és győződjön meg róla, hogy a megfelelő időben hívja, vagy hozzáadja a szükséges hívásokat (mint xhr.open).

következtetés

Ui Ezt a fordítást javíthatjuk, ha itt egy PR-t küldünk.

Oké, rendben, fel fogom használni az ötletet azok számára, akik nem értik. Amikor a jQuery, a hiba jellege «nem fogott Típushiba: határozatlan nem függvénye», lezajlott a mélyben a funkció, például kattintson a felvezető a link / gomb / etc megmutatja sehol, de nincs meg az a funkció. Elvileg nem is közeli. Csak azt lehet kitalálni, hogy az utoljára megváltozott, aztán talán. valahol van valami, ami nem veszi figyelembe, vagy nem van egy vessző (ami JavaScript általában is be van állítva, és egy hibaüzenet is vezet sehova, kivéve a funkciót egy hiba)

gygy, jquery, alapvetően függ a DOM'a elemek, és itt minden egyszerű, hibakeresés és egyéb.

a kedvencem: a webhely egy adott oldalán található jquery plugin (képcsúszka) beleszámítva az "undefined nem függvény" üzenetet. Ez csak ezen az oldalon szerepel, míg a plugint már évek óta sikeresen használják, és problémamentesen működik a webhelyek heapjén. Az ok? Egy másik szkript húzta ki a jQuery egy másik verzióját kívülről, és ennek eredményeképpen két jQuery verzió van az oldalon. És a jQuery funkciói valahogy képesek megzavarni ezt a helyzetet ...

A jelzett hiba esetén a probléma hibakeresése nagyon, nagyon hosszú lehet, különösen, ha nem ismeri a kód legutóbbi módosításait.

A böngésző konzolban végzett hibakeresés a fájdalom.

Nos, krómozott devtulák, például egy teljes kötegnyi hívást jelenít meg, és ott megtalálja a sorszámot a fájlban, amellyel mindent elkezdett




Kapcsolódó cikkek