使用RequireJS加载dojo模块

时间:2016-11-10 00:00:48

标签: javascript dojo requirejs arcgis-js-api

我在我的项目中本地托管ArcGIS JS API 4.1,因此我构建了esri组件,并在requireJS配置文件中添加了路径。我还想构建dojo文件夹,所以基本上将它构建为单个输出文件。但是当我使用requireJS包添加dojo模块时,我在esri文件中得到一个错误,即e不是函数(...)。它出现的代码行是:

define("dojo/_base/config", ["../has", "require"], function(e, t) {
    var r = {};
    if (e("dojo-config-api")) { ... }  //e is undefined.

我知道错误意味着dojo / has未定义但我不明白为什么。我尝试在我的项目中使用dojo / has并没有未定义但是在esri文件中它表示未定义。有谁知道如何解决这个问题。

这是requireJS配置文件:

requirejs.config({
    paths: {
        "jquery": 'https://code.jquery.com/jquery-3.1.0.min',
        'esri/moment': 'https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment',
        "esri": "../lib/arcgis-js-api-4/main",
       "dojo": "../lib/arcgis-js-api-4/dojo-lib",
       "dojox": 'http://js.arcgis.com/4.1/dojox',
       "dijit": 'http://js.arcgis.com/4.1/dijit'
},
bundles: {
        "esri": ["esri/Color",...],
      'dojo': ['dojo/has', 'dojo/domReady',...]
},shim: {
    "esri": {
            deps: ["esri/moment", "dojo", "dojox", "dijit"]
        }
}
});

这是dojo构建的配置:

var profile=(function(){
    return {
        basePath: "./",
        releaseDir: "./",
        releaseName: "dojoLib",
        action: "release",
        cssOptimize: 'comments',
        layerOptimize: false,
        packages:[{
                name: "dojo",
                location: "src/dojo"
            }],
        layers:{
            "dojo/dojoLib": {
                include: ["dojo/dojo", "dojo/i18n", "dojo/domReady", 'dojo/has', 'dojo/request', 'dojo/request/xhr',
                'dojo/request/util', 'dojo/request/watch', 'dojo/io/script', 'dojo/io/iframe', 'dojo/query'],
                customBase: true,
                boot: false    
            }
        }
    };
})();

0 个答案:

没有答案