如何解决 AMD 路径冲突?

2023-12-05

我正在尝试使用Esri ArcGis JavaScript API,其加载方式为Dojo, using dojo.require。我有一个现有的模块化AMD/requirejs我需要将此代码集成到其中的 Typescript 应用程序。在初始 TS 文件的顶部,我导入了几个模块:

import tracer = module('../classes/trace');
import pubsub = module('../classes/pubsub');
import masker = module('../classes/masker');
// etc.

这工作正常,但现在我已经添加了 ArcGis 代码,require.js 不再解析应用程序中的相对路径,而是从 Esri 站点获取了一个 baseUrl,并尝试加载:

http://serverapi.arcgisonline.com/jsapi/arcgis/3.3/js/esri/classes/trace.js
// etc.

导致一串 404 响应和脚本错误。

我怎样才能解决这个问题?

在加载第一个加载模块的文档之前,我尝试在 html 文件的头部设置 requirejs baseUrl :

 <script src="http://serverapi.arcgisonline.com/jsapi/arcgis/3.3"></script>
 <script type="text/javascript" src="/content/client/libs/require.js"></script> <!-- data-main="/content/client/hop/hop.app" -->
 <script type="text/ecmascript">
        require.config({
            baseUrl: "/Content/client/hop/"
        });
 </script>
 <script src="~/Content/client/hop/hop.app.js"></script>

但这失败了,抛出一个异常,要求没有方法配置。

(注意,如果我反转 html 文档头部的顺序,以便 arcgis api 在加载序列中排在最后,那么我会遇到相反的问题 - 我的本地文件都工作正常,但 dojo 和映射 api 失败,因为它们正在寻找当他们应该在 argis 服务器上搜索时相对于我的网站的路径)。


我使用 Esri 的 ArcGIS API,因此遇到了这个问题。Thisdojo 的博客文章帮助了我一些。

第一个问题是 dojo 的配置方式与 requirejs 不同。它会查找先前定义的 dojoConfig 来进行设置。第二个是 Esri 的模块加载全部设置为假设一个基本路径,而您的代码将需要另一个基本路径。您将需要一个如下所示的 dojo 配置:

dojoConfig = {
    baseUrl: location.pathname.replace(/\/[^/]+$/, '') + '/Content/client/hop/',  // magic!
    packages: [
        {
            name: 'dojo',
            location: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.3compact/js/dojo/dojo/"
        },
        {
            name: 'dojox',
            location: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.3compact/js/dojo/dojox"
        },
        {
            name: 'esri',
            location: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.3compact/js/esri"
        }
    ]
};

它所做的是将基本路径设置回当前 url 加上您的额外内容,然后告诉 dojo esri 的内容在哪里。这些是我遇到过的所有包,但如果我错过了一个依赖项,因为它从未为我加载过,那么它将需要一个类似的条目。

您可能遇到的另一个问题是,如果您习惯于在本地加载脚本,如 file://,那么现在来自另一个域的 dojo 将尝试访问 file://,而浏览器将立即关闭它。从现在开始,您需要在本地 http 服务器上进行测试。在 Windows 上我更喜欢HFS在 Linux 上python 让一切变得简单.

我希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决 AMD 路径冲突? 的相关文章

  • 如何理解javascript React中的这段代码

    我在网上找到了这个函数在js中的实现 这个函数递归地过滤一个对象数组 每个对象可能有属性 children 它是对象数组 并且对象也可能有孩子等等 该函数工作正常 但我有点不明白 这是我的功能 getFilteredArray array
  • 循环结束后从头开始重新迭代 for 循环 - JS

    我有一个数组和一个对象数组 我基本上需要将数组的第一个元素映射到数组内对象的第一个元素 依此类推 两个数组的长度都可以是可变的 并且一旦循环结束 循环应该从头开始 但是 我不确定是否再次开始循环 这是我的代码 const colors 7c
  • 通过span标签动态包装js字符串,这可能会在React中危险地渲染

    我有一个字符串 我想使用 aria label 标签将 span 标签单独添加到字母表中 最终结果将在 React 中危险地呈现 请指教 这就是我所拥有的 const str D C B B const addAriaLabels str
  • Vuex 2.0 调度与提交

    有人可以解释一下什么时候使用调度和提交吗 我理解提交会触发突变 调度会触发操作 然而 派遣不也是一种行动吗 正如你所说 dispatch触发一个动作 并且commit触发突变 以下是如何使用这些概念 你总是用 dispatch来自路线 组件
  • 错误:使用本地文件时,summernote 不是一个函数

    我遇到了一个非常奇怪的问题 当我使用本地的 Summernote 文件加载文本编辑器时 发生了 summernote 不是函数 的情况 但是 如果我使用 cdn 文件加载编辑器 一切都会顺利 这是我的 HTML 标头代码
  • 如何通过 Javascript 获取 Bootstrap 版本?

    有没有办法通过调用函数来获取Bootstrap版本 我做了一些研究 但找不到任何方法 版本信息包含在开头的注释中 如下所示 引导程序 v3 3 7 http getbootstrap com http getbootstrap com 版权
  • 从 ElementFinder 数组创建 ElementArrayFinder

    这是一个后续问题当条件评估为 true 时获取元素 扩展 ElementArrayFinder https stackoverflow com questions 32572299 take elements while a conditi
  • 使用 jQuery 将文本分解到随机位置

    有一些 jQuery 示例 介绍如何内爆文本 如下所示 http jsfiddle net doktormolle dNXVx http jsfiddle net doktormolle dNXVx 我怎样才能做到相反 我想将跨度元素中的字
  • 使用 jQuery 检测用户何时滚动到 div 底部

    我有一个 div 框 称为 Flux 里面有可变数量的内容 此 divbox 的溢出设置为自动 现在 我想做的是 当使用滚动到此 DIV 框的底部时 将更多内容加载到页面中 我知道如何执行此操作 加载内容 但我不知道如何检测用户何时滚动到
  • JS - 文件读取器 API 获取图像文件大小和尺寸

    您好 我正在使用以下代码来使用文件读取器 API 获取上传图像
  • 在 React 中使用 document.querySelector?我应该使用 refs 代替吗?如何?

    我现在正在 React 中构建一个轮播 滚动到我正在使用的各个幻灯片document querySelector像这样 useEffect gt document querySelector slide activeSlide scroll
  • 从 jsonp fetch Promise 获取 json

    我刚刚开始使用react native 并且我正在以文档中的经典示例作为基础 fetch https facebook github io react native movies json then response gt response
  • 如何在html5画布中向前和向后移动圆圈中的对象?

    我正在 html5 canvas 中开发一个小应用程序 我需要使用键盘按键以圆周运动移动对象 我可以使用键盘按键移动对象 但存在错误 该对象不会从同一位置向后或向前移动 任何人都可以帮助我完成此操作 请检查以下代码 任何形式的帮助将非常感激
  • 包含菜单按钮的 Ag-grid 单元格

    我在我的项目中使用社区版本的 ag grid 我正在尝试在每一行的一个单元格中添加菜单按钮 单击菜单按钮时 应该会弹出菜单 其中包含编辑 删除 重命名选项 并且当单击菜单上的任何项目时 我需要触发具有行值的事件 我正在尝试创建一个将显示按钮
  • 恢复console.log()

    由于某种原因 附带的原型框架 或其他 JavaScript 代码 Magento http en wikipedia org wiki Magento正在替换标准控制台功能 所以我无法调试任何内容 在 JavaScript 控制台中写下co
  • 根据 Google Apps 脚本中的另一个数组过滤数组

    我对 JavaScript 相当陌生 可能需要一些帮助来解决我在处理 Google Apps 脚本时遇到的问题 我打算做的是根据数组过滤数据 该数组是从特定工作表中的特定单元格中获取的 其中包含我不想保留在数据中的字符串元素 换句话说 包含
  • 找到每个元素的所有父元素

    我正在尝试创建一个面包屑而不使用 url 路由提供者 并且不使用 jQuery 我有一棵这样的树 Humans Trees Animals Cats Lions Dogs Terrier Bulldog Cocker Cars 我希望当我点
  • Typescript 合并来自多个文件的接口

    我有一个名为service ts它公开了以下代码 export interface SomeInterface keyOne string export class TestService
  • 如何将包含所有嵌套数据的Firebase文档移动到其他集合?

    我想将特定文档及其所有嵌套集合从一个集合移动到另一个集合 是否可以 db collection codes doc specificDoc setLocation db collection archive 或者类似的东西 Firestor
  • Webpack 未将 css 复制到 dist 中

    我有以下 css 文件 以及以下 webpack 配置 var path require path module exports entry app src index js output path path resolve dirname

随机推荐

  • 在 R 中的 ggplot2 地图上叠加栅格图层?

    我正在尝试将栅格图层叠加到 ggplot 中的地图上 栅格图层包含卫星标签中每个时间点的似然面 我还想在栅格图层上设置累积概率 95 75 50 我已经弄清楚如何在 ggplot 地图上显示栅格图层 但坐标未彼此对齐 我尝试使每个都有相同的
  • 如何在 Netbeans 中使用 -g 选项进行编译?

    调试时 我收到一条有关异常的警告消息 variable info not available compiled without g 如何在 netbeans 中设置使用 g 进行编译 thanks 据我所知你的own代码是用调试信息编译的
  • MVC3 EF 工作单元 + 通用存储库 + Ninject

    我是 MVC3 的新手 一直在关注 asp net 网站上的精彩教程 然而 我不太清楚如何将工作单元和通用存储库模式与 Ninject 结合使用 我使用本教程作为起点 http www asp net mvc tutorials getti
  • 使用设备策略控制器在后台升级应用程序

    我有一个正在运行的 DPC 应用程序 它是设备所有者 我已在两台不同的 Android 6 0 1 设备上尝试过此操作 以排除任何设备 制造商问题 I used adb shell dpm set device owner com exam
  • VB.NET 中默认启用选项 Strict

    每当我创建一个新的 VB NET 程序时 我必须进入该项目的属性并将 Option strict 设置为打开 我可以这样做一次 这样每次创建新项目时它都是默认的吗 在 Visual Studio 中 转到菜单Tools gt Options
  • 训练后,TensorFlow 始终会收敛到所有项目的相同输出

    这是我正在使用的代码片段 import tensorflow as tf import numpy as np from PIL import Image from os import listdir nodes l1 500 nodes
  • Log4j2 覆盖过去一天的日志文件

    我正在使用 Log4j2 版本 2 3 log4j2 xml 如下所示
  • 使第二行填补上面的空白

    一个简单的 html css 问题 请看这个example 我希望第二行中的块能够填补它们上方的空白 除了使用 JavaScript 之外还有什么办法吗 block float left width 200px height 200px b
  • Lasagne 与 Theano 可能版本不匹配(Windows)

    所以我终于设法让 theano 启动并在 GPU 上运行this指导 测试代码运行良好 告诉我它使用了 GPU 耶 然后我想尝试一下并遵循this数字识别 CNN 训练指南 问题是 我从烤宽面条调用 theano 的方式中收到错误 我猜这里
  • 有没有办法进行内联多值比较?

    我什至觉得问这个问题很愚蠢 因为这看起来很微不足道 但我的大脑却让我失望了 如果我有以下内容 let a b c 1 1 1 有没有一种优雅的方法来确定 a b 和 c 是否都具有相同的值 就像是 let result a b c 这会失败
  • python中如何检查两个字符串是否有交集?

    例如 a abcdefg b krtol 它们没有交集 c hflsfjg 则a和c有交集 检查这个最简单的方法是什么 只需要一个 True 或 False 结果 def hasIntersection a b return not set
  • 使用powershell登录后如何从网站获取表数据?

    我的公司希望我从他们的内部网站获取数据 对其进行组织 然后将其发送到数据库 数据显示在您在站点内导航到的表格上 我想将这些字段提取到文件或内存中以进行进一步处理 到目前为止 我可以通过获取提交登录按钮的 ID 并传递我的用户名 密码来在 p
  • ffmpeg通过python子进程无法找到相机

    这里有一个奇怪的问题 我使用这个命令通过 ffmpeg 捕获我的网络摄像头 通过 Windows 上的 cmd ffmpeg y t 300 rtbufsize 1024M f dshow i video Lenovo EasyCamera
  • 视图需要相互依赖的逻辑:没有模型是否可行?

    我正在尝试编写一些 Oracle 11g SQL 但遇到了一些先有鸡还是先有蛋的问题 我正在寻找类似电子表格的行为 我找到了一个使用 Oracle 的解决方案MODEL条款 但性能并不好 所以我想知道是否 非MODEL 解决方案在技术上甚至
  • 在 django 项目中导入应用程序

    我在 django 项目中的另一个应用程序中导入应用程序时遇到问题 我知道有几个关于这个主题的问题 asnwsers 相信我 我读了很多 甚至还有一些关于 python import 的 这是我的项目树 我将放置真实的文件夹名称 was f
  • 将 URL 变量传递到 xsl 中

    是否可以将 URL 变量传递到 xsl xml 中 例如 http www somedomain com index aspx myVar test myVar2 anotherTest 我希望能够在 xsl 文件的逻辑中使用 myVar
  • 在 Nifi 中从 Avro Schema 创建 Postgresql 表

    使用 InferAvroSchema 我获得了文件的 Avro 架构 我想使用此 Avro 架构在 PostregSql 中创建一个表 我必须使用哪个处理器 我使用 GetFile gt InferAvroSchema gt 我想从此架构创
  • ItemsControl 调整大小时边框消失(使用“stretchpanel”)

    昨天我问如何让 ItemsControl 使其子项均匀分布在可用空间中 在愉快地阅读答案后 我写了 实际上是复制并调整了它 我自己的 stretchpanel 它正是我想要的 然而 我的孩子应该在右侧有一个边框 只要孩子比其内容大 它就可以
  • 与 python pandas 中的melt相反

    我不知道如何在 python 中使用 Pandas 进行 反向熔化 这是我的起始数据 label type value 0 x a 1 1 x b 2 2 x c 3 3 y a 4 4 y b 5 5 y c 6 6 z a 7 7 z
  • 如何解决 AMD 路径冲突?

    我正在尝试使用Esri ArcGis JavaScript API 其加载方式为Dojo using dojo require 我有一个现有的模块化AMD requirejs我需要将此代码集成到其中的 Typescript 应用程序 在初始