8

RequireJS セットアップのほとんどの例では、構成オブジェクトを次のように main.js エントリ ポイントに配置します。

//main.js
require.config({
"paths": {
    //libs
    "lib1": "assets/js/lib/lib1",
    "lib2": "assets/js/lib/lib2",
    "lib3": "assets/js/lib/lib3",
    "lib4": "assets/js/lib/lib4"
    }
});
//start the app
define(["lib1"], function(lib1){/*start the app*/});

構成オブジェクトは別のファイルに配置することを好みます。これは、構成オブジェクトが大きくなるにつれて、同じファイルで維持することが難しくなるためです。

次のセットアップはブラウザーで実行すると機能しますが、何らかの理由で r.js オプティマイザーを実行するとエラーが発生します。

//config.js
define({/*all configuration here*/});

//main.js
define(["config", "require"], function(config, require){
    requirejs.config(config); //set configuration
    require(["app"]); //launch app, where "app" path is defined in config.js
});

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

*依存関係のトレース: main

エラー: ENOENT、そのようなファイルまたはディレクトリはありません 'C:\Work\project\target\app.js*

したがって、r.js は構成設定を取得していないようです。これは、定義されたパスを持つモジュールとしてではなく、相対スクリプトとして app.js を探しているためです。

これが私のbuild.jsファイルです(appDir、dir、およびmainConfigFileはbuild.jsファイルに関連しています):

({
    appDir: "../src",
    baseUrl: ".",
    dir: "../target",
    mainConfigFile: "../src/main.js",
    findNestedDependencies: true,
    modules: [
        {
            name: "main"
        }
    ]
})
4

1 に答える 1