Frage Warum werden in den Chrome Developer Tools / Console JavaScript-Dateien / Fehler nicht angezeigt, die dynamisch geladen wurden?


Ich lade Dateien mit einem require Funktion in meinem Code, der a hinzufügt <script/> Markieren Sie den Hauptteil der Seite mit den relevanten Attributen.

Die Skripte laden sich gut und sie sind zugänglich, aber wenn ich einen Fehler in einem von ihnen habe, wird es nie in der Konsole angezeigt, und ich habe sie nicht auf der Registerkarte Skripte in den Entwicklertools angezeigt und beraubt mich im Wesentlichen die Debugging-Fähigkeiten.

Was mache ich falsch?

Meine require-Funktion sieht so aus:

require: function (moduleId) {
    var filename = this.config.modulesDir + '/' + moduleId + '/module.js';
    var script = $('<script></script>').attr({
        'src': filename,
        'type': 'text/javascript'
    }).appendTo('#Scripts');
}

20
2017-11-22 12:14


Ursprung


Antworten:


Dies funktioniert problemlos mit der neuesten Version von Chrome (15.0.874.121). Ich habe ein Beispiel-Beispiel erstellt und Sie können deutlich sehen, dass es funktioniert:

http://jsfiddle.net/Tgax4/

Es gibt zwei mögliche Lösungen für Ihr Problem:

  1. Chrome ist auf Ihrer Workstation nicht auf dem neuesten Stand. Aktualisiere es.
  2. Sie benötigen Skripte, die nicht existieren und deshalb nicht aufgelistet sind. Stellen Sie sicher, dass Sie den richtigen Standort haben.

Im zweiten Fall sollte Chrome dir in der Konsole sagen, dass das Skript nicht existiert, also bin ich mir ziemlich sicher, dass es etwas mit der älteren Chrome-Version zu tun hat.


5
2017-12-07 18:26



Haben Sie darüber nachgedacht, eine Bibliothek wie require.js (http://requirejs.org/) zu verwenden, um Ihre Abhängigkeiten zu behandeln?

Ich hatte nie Probleme, in dynamisch geladenen Skripten zu debuggen.


2
2017-12-07 18:12



EDIT: vergiss, das war nur JSFiddle, wollte der Schrägstrich zu entkommen. Wenn es entkommen ist, hat es für mich funktioniert. Also ich glaube nicht, dass der Fehler in Ihrer Funktion liegt. Vielleicht liefern Sie uns weitere Informationen.


Könnten Sie versuchen, zu ersetzen

$('<script></script>')

mit

$('<script>')

1
2017-12-01 12:55



Stellen Sie sicher, dass Sie Skripte aus dem Frame anzeigen, in dem Sie sich in Devtools befinden. Wenn Sie Skripte in iframe laden, sollten Sie diesen Frame im Chrom Inspector als aktuelle Umgebung auswählen, um Scripts aus diesem Frame anzuzeigen. In der linken unteren Ecke von Chrome Devtools rechts neben Schaltflächen ist kleine Auswahl, die Ihnen die Möglichkeit gibt, den aktuellen Rahmen zu ändern (Standard ist). Versuchen Sie, ein anderes Bild auszuwählen und zu prüfen, ob die Skripte dann im Skript-Selektor auf der Registerkarte Skripte angezeigt werden.

Und auch, wenn Sie keine Fehler sehen können, prüfen Sie, ob neben den unten angegebenen wählen Sie die richtige Ebene der Protokollierung ausgewählt haben - versuchen Sie, die Schaltfläche "Alle" zu wählen, und prüfen Sie, ob Sie dann Fehler sehen.


0
2017-11-24 14:14