Uncaught TypeError: Die Eigenschaft 'length' von undefined kann nicht gelesen werden

8

Ich habe ein Plugin, das auf die length Eigenschaft vieler Elemente zugreift. Die JavaScript-Konsole verweist jedoch auf Zeile 12 von jquery.min.js.

Wie kann ich zurückverfolgen, um die problematische Zeile in meinem Plugin zu finden?

    
maček 14.06.2010, 19:00
quelle

5 Antworten

4
  

Wie kann ich zurückverfolgen, um die problematische Zeile in meinem Plugin zu finden?

Firebug ist eine gute Möglichkeit, diese Fehler zu beheben.

alt text http://blog.getfirebug.com/wp -content / uploads / 2010/05 / disable-debugger-keyword.png

    
Sarfraz 14.06.2010, 19:03
quelle
6

Wenn Sie minimierte Skripte verwenden, wird jeder Debugger (wie der beste Firebug) Ihnen die gleiche problematische Zeile zeigen und diese Information ist nutzlos (minimierte Skripte sind schwer zu lesen und zu verstehen und sie sind in 1 Zeile geschrieben).

Wenige Möglichkeiten, um solche Probleme zu lösen:

  1. Wie gesagt: Für die Entwicklung nicht minimierter Skripte zeigt der Debugger die Zeile an, die etwas bedeutet, und Sie können, wenn Sie Glück haben, sehr nützliche Kommentare von Entwicklern finden.
  2. Wenn Sie die Vollversion des Skripts nicht finden können, verwenden Sie unfinifier wie folgt: Ссылка (fügen Sie ein minimiertes Skript ein und klicken Sie auf die Schaltfläche unten). Fügen Sie Ihrem Projekt ein Skript hinzu und führen Sie die ungültige Funktion erneut aus. Der Debugger zeigt Ihnen wieder die Zeile, aber dieses Mal sehen Sie eine echte logische Zeile und Sie können in den meisten Fällen das Problem verstehen.
  3. Der Debugger zeigt Ihnen, welches Skript das Problem verursacht. Überprüfen Sie, ob neue Versionen dieses Skripts vorhanden sind. Ich hatte das gleiche Problem einmal, fand Zeile des minimierten Skripts, Name des Plugins (einige Zeilen oben in den Urheberrechten) und stellte dann fest, dass es eine neue Version gibt. Überprüft Changelog und es gab: " Mehrere 'Gesundheitschecks' im gesamten Code für potenzielle unbekannte Attributwerte hinzugefügt " - Kopfschuss :) Aktualisiertes Skript und alles war gut von jetzt an ohne spezielle Debugging Stunden dauern.
  4. Google deinen Fehler mit dem Skriptnamen - es hat mir so viele Male geholfen .. Wahrscheinlich hast du es getan, aber vielleicht hast du es nicht mit Spruchzeichen versucht "" - google gibt Seiten mit genauem Ausdruck im Text zurück.
s3m3n 28.07.2010 15:25
quelle
1

Wenn Sie Chrome verwenden, können Sie die integrierten Entwicklerwerkzeuge verwenden (die ich Firebug bevorzuge), indem Sie zu "View > Developer > Developer Tools" gehen. Der Fehler in der Konsole hat oft einen kleinen nach rechts weisenden Pfeil, der beim Klicken mehr Details über den Fehler anzeigt.

JavaScript-Fehler stammen wahrscheinlich nicht aus einer Bibliothek, sondern aus dem Code, der auf die Methoden / Funktionen in dieser Bibliothek verweist. Daher sollten Sie alle auf der rechten Seite der Konsole aufgelisteten Problemzeilen durchsehen und die Zeile auswählen das entspricht dem Code, den du geschrieben hast, wo dein Problem liegt.

Sie werden wahrscheinlich nicht herausfinden, wo Ihr Problem liegt, indem Sie den Quellcode von jQuery durchsehen. Das Problem liegt in Ihrem Code. Es ist nur so, dass jQuery keine undefinierten Variablen verwenden kann, die Sie übergeben.

    
Kevin Beal 22.03.2013 17:15
quelle
1

Ich finde oft, dass diese mehrdeutigen Framework-Fehler das Ergebnis eines AJAX-Anforderungsfehlers sind. Wenn dies der Fall ist, enthält das von Ihnen gewählte Developer Tool höchstwahrscheinlich eine Registerkarte "Netzwerk", die möglicherweise die eigentliche Fehlerquelle hervorhebt.

Wenn Sie jQuery (oder ein beliebiges JavaScript-Framework) zum Verarbeiten der Ergebnisse von AJAX-Anforderungen verwenden, sind sowohl Formatierungs- als auch Verarbeitungsfehler zusätzliche und häufig übersehene Schritte.

    
Colin Scott-Fleming 30.07.2013 19:10
quelle
0

Zusätzlich zum Debugger / Firebug besteht eine einfache Möglichkeit, dies zu verfolgen (wenn Sie eine Sandbox-Version der Site haben), jedes Plugin einzeln zu kommentieren und zu prüfen, ob der Fehler verschwindet.

    
tainterr 30.07.2013 18:53
quelle