【发布时间】:2013-07-18 02:43:47
【问题描述】:
随着我们对 XPages 版本 9 和 Esri ARcgis javascript api v 3.5 的更新,我们的 dojo 命名空间出现问题,导致出现 defineAlreadyDefined 错误。此处列出了一些类似的问题(Using Durandal dojoConfig and ESRI Maps、How can I fix this AMD path conflict?),但即使有这些帮助,我们也无法使其正常工作。我相信问题是 dojoConfig 语法 - 任何想法或帮助将不胜感激!
这里是我们的带有 js 的 xpage 源代码的简单版本:
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.resources>
<xp:styleSheet
href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/dojo/dijit/themes/claro/claro.css">
</xp:styleSheet>
<xp:styleSheet
href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/esri/css/esri.css">
</xp:styleSheet>
<xp:script clientSide="true">
// dojo.registerModulePath("esri","http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/esri");
dojoConfig = {
baseUrl: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/esri",
packages: [
{
name: 'dojo',
location: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/dojo/dojo/"
},
{
name: 'dojox',
location: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/dojo/dojox"
},
{
name: 'esri',
location: "http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/esri"
}
]};
</xp:script>
<xp:script src="http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/"
clientSide="true">
</xp:script>
<xp:dojoModule name="esri.map"></xp:dojoModule>
</xp:this.resources>
<xp:eventHandler event="onClientLoad" submit="false">
<xp:this.script><![CDATA[var map;
function init(){
var map = new esri.Map("mapDiv", {
center: [-56.049, 38.485],
zoom: 3,
basemap: "streets"
});
}
dojo.ready(init);
]]></xp:this.script>
如果我们包含 dojo.registerModulePath 命令,地图会加载(至少在 FF 中),但会出现错误。没有它,esri dojo 将无法加载 - 它在错误的位置查找 esri 文件。
【问题讨论】:
-
如果从包中删除 dojo 和 dojox 会发生什么? XPages 已经加载了 dojo/dojox(除非你禁用它)