Prostředí:
- Verze ArcGIS Enterprise: 12.1
- Verze Experience Builder: 1.20.0
- Prohlížeč/OS: Chrome
Shrnutí:Vlastní widget registrovaný jako vzdálený zdroj (isRemote: true) na Portal funguje správně při konfiguraci Experience, ale po uložení Experience se context.isRemote widgetu změní na false a context.folderUrl se stane nesprávnou cestou obsahující doslovný řetězec undefined, místo aby si zachoval původní vzdálenou URL widgetu.
Kroky k reprodukci:
- Zaregistrujte vlastní widget na Portal jako aplikaci/widget Experience Builder hostovaný na externím serveru
- Vytvořte novou Experience a přetáhněte widget na plátno
- V této fázi kontrola this.props.context uvnitř widgetu ukazuje:
{
"isRemote": true,
"folderUrl": "https://myserver/xwd/customwidget/"
}
- Uložte Experience
- Po uložení (nebo obnovení publikované aplikace) stejný context ukazuje:
{
"isRemote": false,
"folderUrl": "https://portalURL/apps/experiencebuilder/experience/../cdn/359/undefined"
}
Očekávané chování:context.folderUrl by měl nadále ukazovat na původní vzdálenou URL widgetu (nebo jinak řešit platnou, dostupnou cestu), jak před, tak po uložení Experience.
Skutečné chování:Widget se pokouší načíst své vlastní statické zdroje (v našem případě iframe směřující na ${context.folderUrl}dist/runtime/assets/some.html) z neplatné URL:
https://portalURL/portal/apps/experiencebuilder/experience/../cdn/359/undefineddist/runtime/assets/some.html
což vede k chybě 404 a widget selhává při vykreslení svého obsahu v publikované aplikaci.
Dopad:Vlastní widget nefunguje v publikované produkční aplikaci, zatímco během konfigurace/náhledu v Builderu funguje správně.
Tato chyba ovlivňuje také favicon, takže výsledkem je žádná ikona pro widget.
Relevantní kód (výňatek):
<iframe
id="myWidget"
src={`${this.props.context.folderUrl}dist/runtime/assets/some.html`}
width="100%"
height="90%"
/>