2013-10-10 12 views
7

と3.5の問題は、私はArcGISはRequirejs

のArcGIS 3.5のJavaScript APIとRequireJSを使用しています、私はこのコードを使用して実装さ:

requirejs.config({ 
    baseUrl: "js/", 
    paths: { 
     underscore: 'libs/underscore', 
     tpl: 'tpl', 
     backbone: 'libs/backbone', 
     text: 'libs/text', 
     domReady: 'libs/domReady' 
    }, 
    packages: [ 
       { 
        name: 'dojo', 
        location: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.5compact/js/dojo/dojo/" 
       }, 
       { 
        name: 'dojox', 
        location: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.5compact/js/dojo/dojox" 
       }, 
       { 
        name: 'dijit', 
        location: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.5compact/js/dojo/dijit" 
       }, 
       { 
        name: 'esri', 
        location: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.5compact/js/esri" 
       } 
      ], 
    shim: { 
     'backbone': { 
      //These script dependencies should be loaded before loading backbone.js 
      deps: ['underscore'], 
      //Once loaded, use the global 'Backbone' as the module value. 
      exports: 'Backbone' 
     }, 
     'underscore': { 
      exports: '_' 
     } 
    } 
}); 

、それが表示されます。

<script> 
    var map; 
    require(["esri/map", "dojo/domReady!"], function(Map) { 
    map = new Map("mapDiv", { 
     center: [-96.571541, 39.155622], 
     zoom: 3, 
     basemap: "streets" 
    }); 
    }); 
    }); 
</script> 
これと

が設定RequireJS次のエラー:

私はこのエラーを持っている

**Uncaught TypeError: Object function(){} has no method 'add' has.js:8 

Uncaught Error: Load timeout for modules: dojo/domReady!_unnormalized2,dojo/has!dom-addeventlistener?:./aspect_unnormalized3,dojo/i18n!dojo/cldr/nls/number_unnormalized4,dojo/i18n!dojo/cldr/nls/gregorian_unnormalized5,dojo/i18n!esri/nls/jsapi_unnormalized6,dojox/gfx/renderer!_unnormalized7,dojo/selector/_loader!default_unnormalized8,dojo/has!host-browser?dom-addeventlistener?:../on:_unnormalized9** 

いずれかの説明、またはそれを解決する方法についてのアイデアを持っていますか?

答えて

3

は、ArcGIS JavaScript APIのは、自動的にそれが自分のAMDローダの定義道場のフレームワークをロードします。ここでは、RequireJsのローダを使用しようとしています。すでに存在する場合、関数を置き換えないためです。しかし、Dojoの実装では、いくつかの非標準的なメソッドがいくつかの機能に付いています(この例では 'has'、誰かが投稿しているかもしれないと思います)。これは、dojoが機能するためには、現在Dojoのローダーを使用する必要があることを意味します。これの副作用として、ArcGIS JS APIは現在RequireJsと互換性がありません。

http://requirejs.org/docs/dojo.htmlはRequireJsからの情報が少しあります(ただし、リンクされたチケットは、「固定」とは特定のコードブロックを指し、フレームワーク全体の問題ではありません)。

Using requirejs with dojo 1.9.1は、同様の問題です。 DojoのSource/SDKバージョンを使用して解決したようですが、ArcGIS Javascript APIを使用する場合は不可能と思います。

これは、将来のdojo/ArcGIS JSリリースで解決されるはずです。