【问题标题】:getting multipleDefine (dojoloader) error when tried to use esrimap尝试使用 esrimap 时出现 multipleDefine (dojoloader) 错误
【发布时间】:2018-04-22 16:20:49
【问题描述】:

Complete error logs

我正在使用 angular 1.6 和 argis 4.4 来加载 esri-map。 我使用 'defer' 关键字来加载 'angular-esri-map.js',但它不起作用。 我能够在 SPA 应用程序中成功渲染 esri-map。但是当我试图将它集成到我们的企业应用程序中时,它只是中断了。

我正在通过以下方式加载js=>

        <script src="assets/angular.js"></script>
        <script src="https://js.arcgis.com/4.4/"></script>
        <script defer src="assets/angular-esri-map.js"></script>

以下我在我们的应用程序中添加的依赖项=>

    'ngAnimate',
    'ngCookies',
    'ui.router',
    'esri.map',
    'ngSanitize',
    'ngTouch',
    'angular-carousel',
    'd3'    

下图显示了正在中断的日志=>

如果有人帮助修复这个“multipleDefine”dojoloader 错误,那将是非常有帮助的。

【问题讨论】:

    标签: angularjs dojo esri-maps


    【解决方案1】:

    我认为 dojo AMD 加载程序与另一个加载程序有冲突。但是有一种方法可以防止这种情况。以下代码将冲突的 Dojo amd 加载程序“移动”到另一个临时方法,并在加载所有其他脚本后恢复。

    在 dojo.js 加载到页面(在头部)之后添加这个:

    <script type="text/javascript">if (typeof define === 'function' && define.amd) {if(define.amd.vendor =='dojotoolkit.org'){define._amd = define.amd;delete define.amd;}</script>
    

    然后像您在问题中添加的那样加载所有其他脚本。 然后当所有脚本都加载完毕后,添加这个脚本:

    <script type="text/javascript">if (typeof define === 'function' && define._amd) {define.amd = define._amd; delete define._amd;}</script>
    

    在此之后一切都应该正常工作。

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 2014-02-05
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多