12

R.js は私の shim をロードしていないため、jQuery は tinyMCE の前にロードされ、tiny はロードされる前に初期化されています。シムを機能させるにはどうすればよいですか?:

ビルド-js.js:

var requirejs = require('requirejs');
var config = {
    mainConfigFile: '../js/main.js',
    include: [],
    name: 'main',
    out: '../js/build/build.js',
};

    requirejs.optimize(config, function (buildResponse) {
    var contents = fs.readFileSync(config.out, 'utf8');
});

main.js:

require.config({
    paths: {
        jQuery: 'common/libs/jquery/jquery-min',
        TinyMCE: 'common/libs/tinyMCE/tiny_mce',
    },
    shim: {
        'jQuery': {
            deps:['TinyMCE'],
            exports: '$',
        },
       'jQueryUi': {
            deps: ['jQuery']
        },
        'jQuerySelectmenu': {
            deps: ['jQuery', 'jQueryUi']
        },
        'jQueryAutosize': {
            depts: ['jQuery']
        },
        'Underscore': {
            exports: '_'
        },
        'Backbone': {
            deps: ['Underscore', 'jQuery'],
            exports: 'Backbone'
        }
    }
});

require(['common/src/app'], function (App) {
    App.initialize();
});
4

2 に答える 2

6

私は最近、私を少し困惑させたいくつかの同様の問題に遭遇しました。私はTinyMCEコードに精通していませんが、あなたはそれをシムしていないようです。

シムは(一般的に)AMDスタイルのライブラリに依存することはできません。TinyMCEがAMDモジュールスタイルのカテゴリに該当するかどうかはわかりませんが、該当する場合は、問題が発生しています。そうでない場合は、同様にシムする必要があります。

https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#wiki-shim

「シム」構成に関する重要な注意事項:

他の「shim」モジュールは、シムスクリプトの依存関係としてのみ使用するか、依存関係のないAMDライブラリを使用し、グローバル(jQueryやlodashなど)を作成した後にdefine()を呼び出します。そうしないと、AMDモジュールをshim configモジュールの依存関係として使用する場合、ビルド後、ビルド内のシムコードが実行されるまでそのAMDモジュールが評価されず、エラーが発生します。最終的な修正は、すべてのシムコードをアップグレードして、オプションのAMD define()呼び出しを使用することです。

于 2012-09-20T00:50:05.880 に答える