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
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.
Das Debuggen von Dojo-basierten Anwendungen sollte mit dem Debuggen von JavaScript-Anwendungen identisch sein.
Normalerweise werde ich diese Schritte ausführen:
Fügen Sie console.log () irgendwo im Code hinzu : Das ist schnell und die meiste Zeit ist das genug.
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.
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.
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.
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.
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.
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.
Tags und Links debugging ibm-mobilefirst dojo dojox.mobile