0

私のプロジェクトでは、次の構成で RequireJS 2.2.0 を使用しています。

require.config({
    baseUrl: "Scripts/js/kendo",
    paths: {
        "kendo.datepicker.min": "kendo.datepicker.min",
        "jquery-ui": "../../lib/jquery-ui.min",
        "modules": "../../modules",
        "colorpicker": "../../lib/colorpicker",
        "eye": "../../lib/eye",
        "layout": "../../lib/layout",
        "utils": "../../lib/utils",
        "oraclemaps": "../../lib/oraclemapsv2"
    },
    shim: {
        "kendo.datepicker.min": ["oraclemaps"],
        "jquery-ui": ["oraclemaps"],
        "colorpicker": ["jquery-ui"],
        "eye": ["colorpicker"],
        "layout": ["eye"],
        "utils": ["layout"]
    }
});

oraclemapsjQueryを含むサードパーティのライブラリです。私は彼らのバージョンを使用しているので、Kendo と jQuery-UI の依存関係を shim で定義しました。oraclemaps にはjquery-ui, colorpicker, eye, layout, and utils、前述の順序で必要なコンポーネントがあります。これもシムで定義しました。アプリケーションは正常に動作します。

問題はオプティマイザにあります。構成を使用すると、エラーが発生しましoraclemapsv2.js has more than one anonymous defineた。グーグルで調べたところ、これはjQuery Hammer(oraclemapsに含まれています)の問題であることがわかりました。アプリを実行すると、 につながりmismatched anonymous define() moduleます。

oraclemaps を入れexclude/excludeShallowて HTML で読み込んでみましたが、 Script error for "jquery", needed by: jquery-ui, kendo.core.min.

これが私のオプティマイザ構成です:

({
    baseUrl: "../js/kendo",
    paths: {
        "kendo.datepicker.min": "kendo.datepicker.min",
        "jquery-ui": "../../lib/jquery-ui.min",
        "modules": "../../modules",
        "colorpicker": "../../lib/colorpicker",
        "eye": "../../lib/eye",
        "layout": "../../lib/layout",
        "utils": "../../lib/utils",
        "oraclemaps": "../../lib/oraclemapsv2"
    },
    shim: {
        "kendo.datepicker.min": ["oraclemaps"],
        "jquery-ui": ["oraclemaps"],
        "colorpicker": ["jquery-ui"],            
        "eye": ["colorpicker"],
        "layout": ["eye"],
        "utils": ["layout"]
    },
    include: ["../../lib/require.min"],
    exclude: ["oraclemaps"],
    name: "../../app",
    out: "../build/app-built.js"
})

私は何をすべきか?何か案は?

4

1 に答える 1

0

複数の匿名呼び出しr.jsを含むファイルを理解するためにオプティマイザーができることは何もありません。define

複数の匿名呼び出しoraclemapsを含まないビルドを見つける必要があります。define(つまり、jQuery と Kendo の datepicker を取得する必要があることを意味しますoraclemaps。) そのようなビルドが利用できない場合はoraclemaps、余分なモジュールを削除する処理を行うことができます。defineまたは、呼び出しに名前を追加するように処理することもできます。

于 2016-07-29T10:16:52.387 に答える