首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何解决此AMD路径冲突?

如何解决此AMD路径冲突?
EN

Stack Overflow用户
提问于 2013-03-13 13:10:11
回答 2查看 2.4K关注 0票数 2

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tracer = module('../classes/trace');
import pubsub = module('../classes/pubsub');
import masker = module('../classes/masker');
// etc.

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://serverapi.arcgisonline.com/jsapi/arcgis/3.3/js/esri/classes/trace.js
// etc.

导致404个响应和脚本错误的字符串。

我该如何解决这个问题呢?

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <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服务器上搜索时,正在查找相对于我的站点的路径)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-13 16:24:47

我使用的是Esri的ArcGIS应用程序接口,所以我遇到了这个问题。dojo的This博客文章给了我一些帮助。

第一个问题是,dojo的配置方式与requirejs不同。它寻找一个先前定义的dojoConfig来进行设置。第二,Esri的模块加载都是在假设一个基本路径的情况下设置的,而您的代码将需要另一个基本路径。您将需要一个类似如下的dojo配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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"
        }
    ]
};

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

您可能会遇到的另一个问题是,如果您习惯于在本地将脚本加载为file://,现在来自另一个域的dojo将尝试访问file://,而浏览器将立即关闭该文件。从现在开始,您需要在本地http服务器上进行测试。在Windows上我更喜欢HFS,在Linux上我更喜欢python makes it easy

我希望这能帮到你。

票数 6
EN

Stack Overflow用户

发布于 2013-03-13 16:15:53

由于两者之间的require()冲突,我在使用dojo和requirejs时遇到了几个问题。您应该看看dojo bug 15616。你可能想看看这个来自google group的thread,在其中James建议所有的dojo或者所有需要的东西。

我不确定您使用的是哪个版本的dojo,但建议您从源码中查看,因为在发布的1.8版本中,有一些与requirejs/dojo相关的更改。

如果您唯一的问题是由baseUrl冲突导致的404个错误,则解决方法是创建一个.d.ts文件,该文件为../classes/trace之类的路径设置别名,并将其替换为有效的路径(绝对路径或其他路径)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15386284

复制
相关文章
局部变量错误
UnboundLocalError: local variable 'xxx' referenced before assignment
狼啸风云
2020/06/08
1.4K0
变量作用域经典错误
这段代码中X = X + Y,python是无法识别左边的X是局部变量,右边的X是全局变量的。 同样,我们使用C++来实现上面python代码的相同操作,如下:
zy010101
2022/01/10
2810
Python变量引用错误
虽然定义了变量n,然后在函数内部修改,但是还是报相同的错误。原因在于在函数内部对变量n进行修改后,变量n被python解释器理解为局部变量,就变成和上面代码一样的情况了。
狼啸风云
2020/07/06
1.3K0
实时错误 '91' :对象变量或with块变量未设置
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/9672911
DannyHoo
2018/09/13
4.1K0
实时错误 '91' :对象变量或with块变量未设置
实时错误 ‘91‘ :对象变量或with块变量未设置
最多的应该就是这个问题了,“实时错误‘91’:对象变量或with块变量未设置”。如右图:
DannyHoo
2022/05/09
2.3K0
实时错误 ‘91‘ :对象变量或with块变量未设置
openjpeg:解决静态链接时未定义引用错误:undefined reference to `__imp_opj_xxxxxxx'
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/50598753
10km
2019/05/25
4.6K0
openjpeg:解决静态链接时未定义引用错误:undefined reference to `__imp_opj_xxxxxxx'
完美解决丨#在python中,如果引用的变量未定义,则会报告NameError: name ‘变量名‘ is not defined。
在python中,如果引用的变量未定义,则会报告NameError: name '变量名' is not defined。
不吃西红柿
2023/04/21
2.9K0
C/C++未定义行为
下面是一段代码,这段代码中有标准未定义的行为。代码如下: #include<iostream> using namespace std; int main() { int j = 0;
zy010101
2020/04/16
3.7K0
关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法
在本问题提供解决办法前,整个过程先引入一个实例可以更好地说明这个问题: 例:从键盘输入一个4位数,按如下规则加密后输出。加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 解: 函数文件:
荣仔_最靓的仔
2021/02/02
12.3K0
关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法
再也不用担心变量类型错误!学会JS中如何轻松检查变量类型
如果判断的是基本数据类型或JavaScript内置对象,使用toString;如果要判断的是自定义类型,请使用instanceof。
程序视点
2023/06/13
4120
再也不用担心变量类型错误!学会JS中如何轻松检查变量类型
DS-5/RVDS4.0变量初始化错误
最近总是有各种调试时的错误,内存错误一般,我无意中发现的所有全局变量失败,也就是说,全局变量声明之后,颂值早期值误.
全栈程序员站长
2022/07/06
3850
DS-5/RVDS4.0变量初始化错误
解决调用未定义 swoole_async_readfile函数问题
https://github.com/swoole/swoole-src/issues/2439
全栈程序员站长
2022/07/11
4K0
解决调用未定义 swoole_async_readfile函数问题
c++使用了未定义类型_c++如何新建
第一个参数是一个指向SECURITY_ATTRIBUTES结构体的指针,一般的情况下,可以是nullptr。
全栈程序员站长
2022/11/09
2.7K0
GDB读取动态库中定义的全局变量错误
最近看了一篇getopt使用的文章,为了追踪其执行的逻辑,于是采用GDB挂载调试的方式进行查看。但却出现了GDB打印全局变量optind的时候出现错误。
河边一枝柳
2021/08/06
2.1K0
IE11出现"__doPostBack”未定义
  系统做迁移,在新服务器IIS上部署,部署后的系统在IE8和其他浏览器上显示正常,
_一级菜鸟
2020/07/22
2.6K0
ubuntu gcc编译时对’xxxx’未定义的引用问题
http://www.cnblogs.com/oloroso/p/4688426.html
bear_fish
2018/09/19
8.2K0
优雅地创建未定义类PHP对象
在PHP中,如果没有事先准备好类,需要创建一个未定义类的对象,我们可以采用下面三种方式:
硬核项目经理
2019/11/21
2.8K0
Array find方法在UC浏览器未定义
今天发现用UC浏览器访问一个项目出现bug,后来检查出来原来UC浏览器并没有find方法(但它有filter方法),所以写了以下垫片。。。
javascript.shop
2019/09/04
2.7K0
点击加载更多

相似问题

RoR - Model.all,但没有created_at和updated_at字段

30

插入未保存的created_at、updated_at列

50

不自动将created_at和updated_at插入到不工作的laravel中

26

updated_at和created_at字段在使用InserGetId函数插入集合时不会自动插入?

11

添加默认值与created_at相同的updated_at列

110
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文