Ambiente:
- Versão do ArcGIS Enterprise: 12.1
- Versão do Experience Builder: 1.20.0
- Navegador/SO: Chrome
Resumo:Um widget personalizado registrado como um recurso remoto (isRemote: true) no Portal funciona corretamente durante a configuração de uma Experiência, mas após salvar a Experiência, o context.isRemote do widget muda para false e context.folderUrl torna-se um caminho malformado contendo a string literal undefined, em vez de manter a URL remota original do widget.
Passos para reproduzir:
- Registrar um widget personalizado no Portal como um app/widget do Experience Builder hospedado em um servidor externo
- Criar uma nova Experiência e arrastar o widget para a tela
- Nesta etapa, inspecionar this.props.context dentro do widget mostra:
{
"isRemote": true,
"folderUrl": "https://myserver/xwd/customwidget/"
}
- Salvar a Experiência
- Após salvar (ou recarregar o app publicado), o mesmo contexto mostra:
{
"isRemote": false,
"folderUrl": "https://portalURL/apps/experiencebuilder/experience/../cdn/359/undefined"
}
Comportamento esperado:context.folderUrl deve continuar apontando para a URL remota original do widget (ou resolver para um caminho válido e acessível), tanto antes quanto depois de salvar a Experiência.
Comportamento real:O widget tenta carregar seus próprios recursos estáticos (no nosso caso, um iframe apontando para ${context.folderUrl}dist/runtime/assets/some.html) de uma URL inválida:
https://portalURL/portal/apps/experiencebuilder/experience/../cdn/359/undefineddist/runtime/assets/some.html
resultando em um erro 404 e o widget falhando ao renderizar seu conteúdo no app publicado.
Impacto:O widget personalizado não funciona no app de produção publicado, embora funcione corretamente durante a configuração/visualização no Builder.
Este bug também impacta o favicon, então o resultado é nenhum ícone para o widget.
Código relevante (trecho):
<iframe
id="myWidget"
src={`${this.props.context.folderUrl}dist/runtime/assets/some.html`}
width="100%"
height="90%"
/>