2

RequireJS で OpenLayers ライブラリを使用しようとしています。

問題は、モジュールの唯一の依存関係としてリストされているにもかかわらず、OpenLayers が「未定義」のままであることです。

define(['OpenLayers'],function (OpenLayers) {
   console.log(OpenLayers);
});

これにより、「未定義」が出力されます。

OpenLayers を jquery に置き換えると (両方の .js ファイルが同じフォルダーにあります)、未定義になることはなくなります。

では、なぜ OpenLayers が RequireJS によって読み込まれないのでしょうか?

4

2 に答える 2

10

このコードは私のために働いた:

require.config({
    shim: {
        OpenLayers: {
            exports: 'OpenLayers'
        }
    }
});

require(['OpenLayers'], function(OpenLayers) {
    console.log(OpenLayers);
});
于 2012-10-11T13:56:07.147 に答える
6

Backbone.Marionette でも同じ問題がありました。オブジェクト'marionette': { exports: 'Marionette' }への追加は機能しました。shim

このshim追加は、次の理由で OpenLayers と Marionette の両方で機能します ( RequireJS のドキュメントから)。

shim: define() を使用しない古い従来の「ブラウザー グローバル」スクリプトの依存関係とエクスポートを構成して、依存関係を宣言し、モジュール値を設定します。例 (RequireJS 2.1.0+):

requirejs.config({
    shim: {
        'backbone': {
            //These script dependencies should be loaded before loading
            //backbone.js
            deps: ['underscore', 'jquery'],
            //Once loaded, use the global 'Backbone' as the
            //module value.
            exports: 'Backbone'
        }
于 2013-01-24T17:08:31.177 に答える