Meine Dojo-Anwendung bricht nach dem Erstellen, beim Laden der App, wirft 'multipleDefine' und gibt folgenden Fehler:
Fehler {src: "dojoLoader", info: Objekt}
Nachricht: multipleDefine
info: Objekt {pid: "dojo", mittel: "dojo / nls / dojo_de-us", pack: Objekt, URL: "dojo / nls / dojo_en-us.js", ausgeführt: 5 ...}
Hier ist mein Profil:
%Vor%}
und hier ist die index.html innerhalb src /
%Vor%HINWEIS:
build.sh
ist dafür verantwortlich, das Flag "isDebug" zu entfernen Bereitstellung in der Produktion. Wenn Sie diese Flagge überhaupt ändern, werden Sie Brechen Sie den Build!
Dies ist die generierte index.html in dist /
%Vor%Ich habe überprüft, ob dojo / nls / dojo_en-us.js existiert und es ist in Ordnung. Ich stecke an diesem Punkt fest und habe keine Ahnung!
Jede Hilfe zur Behebung dieses Problems ist willkommen.
Können Sie Ihre Anforderungen in run.js eingeben? Brauchst du dort "dojo / _base / config"?
[bemerkte gerade den gleichen Fehler, weil ich es vergessen habe;)]
aus der Dokumentation:
Es ist wichtig, den Unterschied zwischen dojoConfig und dojo / _base / config zu beachten. dojoConfig ist rein für Eingabezwecke - so kommunizieren wir Konfigurationsparameter mit dem Loader und den Modulen. Während des Bootstrap-Prozesses wird dojo / _base / config von diesen Parametern für eine spätere Suche nach Modulcode aufgefüllt.
Ich hatte ein ähnliches Problem mit dem Fehler
multipleDefine
wenn ich versuche, die Greensock-Bibliothek in mein Dojo-Projekt aufzunehmen.
Das Problem tritt auf, wenn eine andere Bibliothek außerhalb von Dojo ihre eigene define
-Funktion deklariert (in meinem Fall war es TweenMax), wenn sie mit Dojo Loader kollidieren.
Eine Lösung besteht darin, sicherzustellen, dass der Dojo-Loader aufgerufen wird, nachdem Ihre Bibliothek oder Ihr Skript, die eine define
-Funktion verwenden, geladen wurden.
Dojo sollte also das Neueste in Ihrem Skript sein, um es in die html head
:
Dieses Problem ist auch mit jQuery UI und anderen Bibliotheken sichtbar .
Es gibt einen Hinweis dazu in der Loader-Dokumentation (zum Zeitpunkt dieser Antwort sowieso).
multipleDefine
AMD define wurde als Verweis auf ein Modul bezeichnet, das über bereits definiert. Die häufigste Ursache für dieses Problem ist das Laden Module über Elemente im HTML-Dokument. Benutze den Lader. Verwenden Sie keine Elemente. Die zweithäufigste Ursache ist das Bestehen explizite Modulbezeichner zum Definieren; Tu das auch nicht.
Viele Bibliotheken implementieren jetzt UMD, die grundsätzlich versuchen werden, die Existenz eines AMD-Laders automatisch zu erkennen. Zum Beispiel, Bootstrap - das beliebte Front-End-Framework - implementiert UMD.
Das folgende Beispiel funktioniert also (beachten Sie, dass Bootstrap global geladen wird):
%Vor%Das zweite Beispiel funktioniert jedoch nicht, da der UMD-Code den AMD Loader erkennt und sich selbst registriert. Dies löst den multipleDefine-Fehler gemäß der Dokumentation aus.
%Vor%Wenn Sie die Bibliothek global laden möchten, verwenden Sie das erste Beispiel oben und laden Sie es vor dem Dojo-Loader. Wenn Sie die Bibliothek als AMD-Modul laden möchten, verwenden Sie den Loader.
Tags und Links locale nls dojo dojo-build dojo-1.9