0

完整的错误日志

我正在使用 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 错误,那将是非常有帮助的。

4

1 回答 1

0

我认为 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>

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

于 2017-11-11T18:31:18.507 回答