RequireJS folgt nicht dem relativen Pfad für datenmain mit baseUrl set

8

Mit requireJS versuche ich einen Pfad für meine Datenhauptdatei anzugeben, der sich von der baseUrl unterscheidet. Es scheint, dass requireJS ignoriert, was auch immer ich vor dem Dateinamen eintippe, und suche immer nach der Datei im baseUrl-Ordner.

Ich habe folgende Ordnerstruktur:

%Vor%

Inhalt von index.html:

%Vor%

Inhalt von config.js:

%Vor%

Und ich bekomme einen Fehler 404 für: GET [...] / scripts / main2.js, obwohl es nach [...] / scripts / test / main2.js suchen sollte. Wenn ich die Datei config.js entferne und data-main="scripts / test / main2" verwende, funktioniert es, aber ich möchte in der Lage sein, eine baseUrl für mein Projekt anzugeben.

Irgendwelche Ideen?

Bearbeiten: Nach der Antwort von Waxen:

  • Selbst wenn ich "scripts / test / main2", "/ scripts / test / main2" oder "whateverIWant / main2" in meinem Datenhauptverzeichnis verwende, sucht es seltsamerweise immer nach "scripts / main2.js"

Beachten Sie, dass ich requirejs 2.1.8

verwende     
personne3000 30.10.2013, 12:44
quelle

2 Antworten

11

Dies funktioniert nicht so, wie Sie es wollen, weil Sie mit einer Datenhauptleitung anfordern, bevor Sie die baseURL setzen. Ich bin nicht sicher, warum es versucht, zu scripts / main2.js zu gehen, obwohl; Ich würde erwarten, dass es versucht, test / main2.js statt scripts / main2.js zu laden. Das ist aber nebensächlich.

Was Sie tun müssen, ist sicherzustellen, dass Ihre baseURL verfügbar ist, bevor Sie versuchen, Ihre Daten-main zu laden. Dies kann erreicht werden, indem Sie zuerst Ihre Konfiguration und dann die Syntax aus dem zweiten Beispiel verwenden: Ссылка .

>

Inhalt von index.html:

%Vor%

Inhalt von config.js:

%Vor%     
Waxen 30.10.2013, 17:33
quelle
7

Ich habe diesen Thread gelesen und konnte nicht ganz nachvollziehen, warum die Verwendung des Attributs "data-main" auf eine js-Konfigurationsdatei nicht mit der Angabe der Konfiguration vor dem Laden von Require identisch ist, wie die Antwort auf diesen Thread vermuten lässt.

In meinen Experimenten habe ich gelernt, dass das Setzen von Werten mit einer data-main-config-js-Datei funktioniert (was wiederum nicht möglich ist). Für diejenigen, die neu zu Require und AMDs sind und die Asynchronität im Allgemeinen, hat der Begriff "könnte funktionieren" etwas damit zu tun, dass asynchrone Operationen wann laufen - und nicht in irgendeiner vorhersagbaren Reihenfolge.

Nachdem dies festgestellt wurde, gibt es einen sehr wichtigen Punkt in der aktuellen Version der RequireJS-Dokumentation, die mir bis jetzt entgangen ist:

  

Sie können die Datei "require.config" auch von Ihrem Datenhaupteintrittspunkt aus aufrufen   Beachten Sie, dass das Daten-Hauptskript asynchron geladen wird. Vermeiden   andere Einstiegspunktskripte, die fälschlicherweise davon ausgehen, dass data-main und seine   require.config wird immer vor dem Laden des Skripts ausgeführt.

Weitere Informationen finden Sie unter: Ссылка

Da ich für RequireJS neu war, war ich leicht entsetzt, das zu lernen - und ich habe viel Zeit damit verschwendet, Pfadzugriffsprobleme zu debuggen. In diesem Stadium ist es mir unklar, warum irgendjemand Daten-main verwenden würde (insbesondere um eine baseUrl zu definieren), da diese Referenz nur zufällig funktioniert. Stattdessen wird die von diesem Thread vorgeschlagene Lösung (in der Sie die baseUrl in einem Skript-Tag festlegen, das NICHT asynchron ist) wie erwartet funktionieren und die RequireJS-Konfiguration vor dem Starten von RequireJS zuverlässig festlegen.

    
Jazimov 12.06.2014 10:49
quelle

Tags und Links