隨着我們對XPages版本9和Esri ARcgis javascript api v 3.5的更新,我們遇到了導致defineAlreadyDefined錯誤的dojo命名空間問題。這裏列出了一些類似的問題(Using Durandal dojoConfig and ESRI Maps,How can I fix this AMD path conflict?),但即使有這種幫助,我們也無法使其工作。我相信這個問題是dojoConfig語法 - 任何想法或幫助將不勝感激!XPage 9與Esri映射dojo衝突:'defineAlreadyDefined'
下面是一個簡單的版本,我們的XPage源代碼JS:
<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(除非你禁用它) –