Ich erhalte diese Fehlermeldung, wenn ich meine Webanwendung zum ersten Mal durchsuche (normalerweise in einem Browser mit deaktiviertem Cache).
Fehler: Nicht übereinstimmendes anonymes define () -Modul: function (require) {
HTML :
<html>
.
.
.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script> var require = { urlArgs: "v=0.4.1.32" }; </script>
<script data-main="assets/js/main" src="assets/js/libs/require.js"></script>
<script src="assets/js/ace/ace.js?v=0.4.1.32"></script>
</body>
</html>
JS :
$(function () {
define(function (require) {
// do something
});
});
Weiß jemand genau, was dieser Fehler bedeutet und warum er auftritt?
Quelldatei , eine kurze Diskussion darüber auf der Seite mit den Github-Problemen
quelle
Ich hatte diesen Fehler, weil ich die Datei requirejs zusammen mit anderen Bibliotheken, die direkt in einem Skript-Tag enthalten sind, eingefügt habe. Diese Bibliotheken (wie lodash) verwendeten eine Definitionsfunktion, die im Widerspruch zur Definition von require stand. Die requirejs-Datei wurde asynchron geladen, daher vermute ich, dass die Definition der Anforderung definiert wurde, nachdem die anderen Bibliotheken definiert wurden, daher der Konflikt.
Um den Fehler zu beseitigen, fügen Sie alle anderen js-Dateien mit requirejs ein.
quelle
Als ich mit den Reaktionen anfing, stieß ich auf das Problem, und als Anfänger können die Dokumente auch auf Griechisch geschrieben sein.
Das Problem, auf das ich gestoßen bin, war, dass die meisten Anfängerbeispiele "anonyme Definitionen" verwenden, wenn Sie eine "Zeichenfolgen-ID" verwenden sollten.
anonym definiert
Definieren Sie mit der Zeichenfolgen-ID
Wenn Sie define mit einer Zeichenfolgen-ID verwenden , vermeiden Sie diesen Fehler, wenn Sie versuchen, die Module wie folgt zu verwenden:
quelle
Gemäß den Dokumenten :
quelle
Beachten Sie, dass einige Browsererweiterungen den Seiten Code hinzufügen können. In meinem Fall hatte ich ein Plugin "Emmet in all textareas", das meine Anforderungen durcheinander brachte. Stellen Sie sicher, dass Ihrem Dokument kein zusätzlicher Code hinzugefügt wird, indem Sie ihn im Browser überprüfen.
quelle
Die vorhandenen Antworten erklären das Problem gut, aber wenn das Einfügen Ihrer Skriptdateien mit oder vor requireJS aufgrund von Legacy-Code keine einfache Option ist, besteht eine leicht hackige Problemumgehung darin, require vor Ihrem Skript-Tag aus dem Fensterbereich zu entfernen und es anschließend nach den Worten wieder herzustellen. In unserem Projekt ist dies hinter einem serverseitigen Funktionsaufruf eingeschlossen, aber der Browser sieht effektiv Folgendes:
Nicht das ordentlichste, scheint aber zu funktionieren und hat viel Refractoring gespart.
quelle
script
Elementen ausführen zu lassen .(function(){ var define = undefined; // the UMD registration code won't find the global 'define' anymore! // generated content goes here })()
Oder Sie können diesen Ansatz verwenden.
<script data-main="js/app.js" src="js/require.js"></script>
Was es tun wird, wird Ihr Skript nach dem Laden von require.js geladen .
quelle