2012-09-04 10 views
9

Mam problem ze względnymi ścieżkami w requirejs.ścieżka względna nie działa ze ścieżkami

Przede wszystkim mam następującą strukturę. Używam go z wirtualnego hosta (os.com) i ścieżka jest 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 
    } 

}); 

Po uruchomieniu otrzymuję następujące błędy.

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

Gdybym wyjąć „ui” nieruchomości od nieruchomości do „ścieżek”, a następnie zmienić deps do [ „UI/ui”], to działa, ale chciałbym używać ścieżek.

Zmienione config.js

require.config({ 

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


}); 

Jak mogę zmienić config aby ścieżki i względną ścieżkę pracy razem?

Odpowiedz

12

Miałem podobny problem. Nie miałem depów: część "ui" w mojej konfiguracji, tylko ustawienie ścieżki, ale nadal względne odwołanie do modułu ("./class/menuBuilder") nie działałoby z modułu załadowanego ścieżką ("ui:" ui/ui '") i zamiast tego użyłby baseUrl. Aby go rozwiązać, zdefiniowałem "ui" jako pakiet:

require.config({ 

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

}); 

W takim przypadku wymagane będzie prawidłowe załadowanie stosunkowo pokrytych modułów.

Oto przydatny post: Relative paths with RequireJS modules/packages

4

Rozwiązaniem tego problemu jest użycie konfiguracji map, a nie konfiguracji ścieżki. Konfiguracje ścieżek powinny być używane tylko w przypadku folderów, a nie samych modułów. Konfiguracje map dotyczą poszczególnych modułów.

Więc spróbuj:

require.config({ 
    map: { 
    '*': { 
     'ui': 'ui/ui' 
    } 
    } 
}); 
Powiązane problemy