2012-09-04 17 views
9

Ich habe ein Problem mit relativen Pfaden in Requirejs.relativer Pfad funktioniert nicht mit Pfaden

Zunächst habe ich die folgende Struktur. Ich laufe es mit einem virtuellen Host (os.com) und der Weg ist os.com/test

enter image description here

index.html

<script data-main="config" src="require.js"></script> 

config.js

require.config({ 

    baseUrl: "./apps", 
    deps: ['ui'], 
    paths: { 
    ui: 'ui/ui', 
    system: 'system/system', 
    core: 'core/core' 
    } 


}); 

ui.js

define(['./class/menuBuilder',"./class/window"], function(menuBuilder, windowBuilder){ 


    return { 
     menuBuilder: menuBuilder, 
     windowBuilder: windowBuilder 
    } 

}); 

Wenn ich es ausführen, erhalte ich die folgenden Fehler.

GET http://os.com/test/apps/class/menuBuilder.js 404 (Not Found) 
GET http://os.com/test/apps/class/window.js 404 (Not Found) 

Wenn ich herausnehmen ‚ui‘ Eigenschaft von der Eigenschaft ‚Pfade‘ dann deps ändern [ ‚ui/ui‘], es funktioniert, aber ich möchte Pfade verwenden.

Changed config.js

require.config({ 

    baseUrl: "./apps", 
    deps: ['ui/ui'], 
    paths: { 
    system: 'system/system', 
    core: 'core/core' 
    } 


}); 

Wie kann ich meine Config ändern Pfade und relativen Pfad arbeiten zusammen zu machen?

Antwort

12

Ich hatte ähnliches Problem. Ich hatte keine Deps: 'ui' Teil in meiner Konfiguration, nur die Pfadeinstellung, aber immer noch die relative Modulverweis ('./class/menuBuilder') würde nicht funktionieren von dem Modul mit Pfad geladen ("ui: 'ui/ui '") und würde stattdessen baseUrl verwenden. Um es zu lösen, ich definierte ‚ui‘ als Paket:

require.config({ 

    baseUrl: "./apps", 
    deps: ['ui'], 
    paths: { 
    system: 'system/system', 
    core: 'core/core' 
    }, 
    packages : [ 
    { 
     name: 'ui', 
     location : 'ui', 
     main : 'ui' 
    }, 
    ] 

}); 

In diesem Fall benötigen lädt relativ pathed Module richtig. Hier

ist ein nützlicher Beitrag: Relative paths with RequireJS modules/packages

4

Die Lösung hier ist die Map-Konfiguration zu verwenden, nicht Wege-Konfiguration. Pfadkonfigurationen sollten nur für Ordner verwendet werden, nicht für Module selbst. Kartenkonfigurationen gelten für einzelne Module.

So versuchen:

require.config({ 
    map: { 
    '*': { 
     'ui': 'ui/ui' 
    } 
    } 
});