Wie debugge ich Dojo im Browser?

8

Ich bin gerade dabei, eine App mit Worklight Studio 5.0.6 und Dojo (Mobile) 1.8.3 zu entwickeln. Es fällt mir wirklich schwer, eine geeignete Methode zum Debuggen zu finden. Nachdem Sie 5-10 Minuten gewartet haben, um einen Deploy-Prozess auf dem Server zu erstellen, sieht ein Fehler normalerweise im Chrome-Debugger so aus:

Wie soll ich diesen Fehler in meiner Quelle finden? Der gesamte Stack-Trace besteht aus vollständig Dojo-Code, der nach 20 Abstraktionsschichten eine absolut nutzlose Fehlermeldung generiert.

Ernsthaft, wie gehst du damit im wirklichen Leben um? Welche Methoden verwenden Sie zum Debuggen von Dojo-basierten Apps im Browser?

spyro

    
spyro 30.09.2013, 09:46
quelle

4 Antworten

2

Bei dojo.parse-Fehlern finde ich es nützlich, den Chrome-Debugger bei allen Ausnahmen anzuhalten (das violette Symbol auf dem Screenshot sollte blau sein). Normalerweise erhalten Sie weitere Details über die Ursache des Fehlers, den Namen des analysierten DOM-Knotens usw. in der ersten Ausnahme, die ausgelöst wird.

Rémi.

    
Rémi Svahn 30.09.2013 12:21
quelle
2

Das Debuggen von Dojo-basierten Anwendungen sollte mit dem Debuggen von JavaScript-Anwendungen identisch sein.

Normalerweise werde ich diese Schritte ausführen:

  1. Fügen Sie console.log () irgendwo im Code hinzu : Das ist schnell und die meiste Zeit ist das genug.

  2. Haltepunkt im Debugger setzen : Wenn Schritt 1 nicht ausreicht, können Sie anhand der Fehlerinformationen den Haltepunkt vor der Fehlerzeile setzen und dann ein- oder aussteigen.

  3. Kommentar vor kurzem Änderungen : für einen Fehler, der schwer zu finden ist die Fehler-Zeile, zum Beispiel, Fehler in Ihrem Fall zu analysieren, ist der gute Weg, Ihre Änderungen vor kurzem durch einen Kommentar bis zu deiner letzten Arbeitsversion. Oder kehren Sie zu Ihrer letzten funktionierenden Version zurück und fügen Sie dann Code eins nach dem anderen hinzu.

  4. Erstellen Sie eine einfache Anwendung, um den Fehler zu reproduzieren : Wenn Ihre Anwendung sehr kompliziert ist und es Ihnen schwerfällt, den oben beschriebenen Methoden zu folgen, können Sie versuchen, eine neue Anwendung zu erstellen aktuelle Anwendung, aber mit einfachen Logiken und versuchen, den Fehler zu reproduzieren.

  5. Basierend auf der Erfahrung : Einige Fehler, zum Beispiel extra ',' am Ende des Arrays, das bei Chrome und Firefox funktioniert, melden eine Unsinn-Fehlerinformation bei IE. Debug diese Art von Fehlern ist sehr schwierig, können Sie auf Ihre Erfahrung oder eine Google-Suche basieren.

Sean Zhao 30.09.2013 13:57
quelle
2

Haben Sie isDebug: true in Ihrer dojoConfig angegeben? Versuchen Sie auch zu sehen, ob das Gleiche in anderen Browsern auftritt.

Update: Ich habe kürzlich festgestellt, dass es Probleme mit dem Google Chrome- und Dojo-Debugging gibt und ich denke, dass es mit dem asynchronen Laden von Dateien zu tun hat. Wie Sie im Screenshot von @spyro sehen können, ist das Objekt ReferenceError leer (was Sie an den leeren Klammern {} bemerken). Wenn Sie das Problem lösen möchten, öffnen Sie die Konsole von Google Chrome erneut (z. B. indem Sie zweimal F12 antippen). Nach dem erneuten Öffnen sollte ReferenceError nicht mehr leer sein. Jetzt können Sie das Objekt erweitern, indem Sie den Pfeil daneben verwenden und eine detailliertere Meldung darüber erhalten, was fehlgeschlagen ist.

    
g00glen00b 24.12.2013 10:36
quelle
1

Normalerweise mache ich in solchen Situationen einen Haltepunkt innerhalb des Fehlerrückrufs (Zeile 3398 in Ihrem Fall) und schaue dann in die Fehlervariable ("e").

Ich bin mir nicht sicher, wie vertraut Sie mit dem Web Inspector sind, aber wenn Sie den Haltepunkt erreicht haben, öffnen Sie die Web Inspector-Konsole und suchen Sie nach den Fehlereigenschaften "e.message" und "e.stack" (einfach eingeben) "e.message" in der Konsole). Außerdem ist es während der Entwicklung besser Dojo-Optimierung / Minification zu vermeiden, die Ihre Debug-Fähigkeit erheblich verbessern.

Unter dem Strich wird versucht, den Haltepunkt zu platzieren, bevor der Fehler ausgelöst wird.

    
eabe 03.10.2013 04:39
quelle