2012-09-04 20 views
9

requirejsの相対パスに問題があります。パスで相対パスが機能しない

まず、私は以下の構造を持っています。私は(os.com)仮想ホストでそれを実行していることだし、パスが

enter image description here

index.htmlを

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

config.jsの

os.com/test
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 
    } 

}); 

私が実行すると、次のエラーが発生します。

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

私は「パス」プロパティから「UI」プロパティを取るならば、それは動作しますが、[「UI/UI」]にDEPSを変更するが、私はパスを使用したいと思います。

変更config.jsの

require.config({ 

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


}); 

どのように私は一緒にパスと相対パスの作業をするために私の設定を変更できますか?

答えて

12

同様の問題がありました。私はデプスを持っていませんでした:私の設定では、 'ui'の部分は、パス設定だけですが、相対的なモジュール参照( './class/menuBuilder')はパスでロードされたモジュールからは動作しませんでした/ ui '")、代わりにbaseUrlを使用します。これを解決するために、私はパッケージとして「ui」を定義しました。この場合、requireは相対処理されたモジュールを正しく読み込みます。ここで

は便利なポストである:ここRelative paths with RequireJS modules/packages

4

ソリューションは、マップの設定ではなく、パスの設定を使用することです。パス設定は、モジュール自体ではなく、フォルダに対してのみ使用する必要があります。マップの設定は個々のモジュールに適用されます。

ので、試してみてください。

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