9

requirejs の相対パスに問題があります。

まず、私は次の構造を持っています。仮想ホスト (os.com) で実行しており、パスは os.com/test です。

ここに画像の説明を入力

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
    }

});

実行すると、次のエラーが表示されます。

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」プロパティを取り出して deps を ['ui/ui'] に変更すると機能しますが、パスを使用したいと思います。

config.js を変更しました

require.config({

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


});

パスと相対パスが連携するように構成を変更するにはどうすればよいですか?

4

2 に答える 2

12

同様の問題がありました。私の構成には deps:'ui' の部分がなく、パスの設定だけでしたが、相対モジュール参照 ('./class/menuBuilder') はパス ("ui: 'ui /ui'") を使用し、代わりに baseUrl を使用します。それを解決するために、「ui」をパッケージとして定義しました。

require.config({

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

});

この場合、require は相対パスのモジュールを正しくロードします。

これは便利な投稿です: RequireJS モジュール/パッケージを使用した相対パス

于 2012-11-21T22:19:53.053 に答える
4

ここでの解決策は、パス構成ではなく、マップ構成を使用することです。パス構成は、モジュール自体ではなく、フォルダーにのみ使用する必要があります。マップ構成は個々のモジュールに適用されます。

だから試してください:

require.config({
  map: {
    '*': {
      'ui': 'ui/ui'
    }
  }
});
于 2013-01-27T12:00:48.097 に答える