Este documento especifica os requisitos para corrigir erros de ReferenceError ("Cannot access ... before initialization") reportados no console do navegador ao carregar a interface do Editor HTML Visual.
1. Problema e Diagnóstico
No arquivo gestor/assets/interface/html-editor-interface.js, o fluxo de inicialização da interface está encapsulado dentro do callback $(document).ready(function () { ... }).
-
TDZ com
WIDGET_SCRIPT_MODULES:-
A chamada de inicialização
contentPageTabHandler();é executada de forma síncrona na linha 739. -
Quando ativada (se a aba ativa no localStorage for
visualizacao-pagina), ela invoca sincronamentepreviewHtml()emontarWidgetAssetsHead(). -
montarWidgetAssetsHead()tenta ler a constanteWIDGET_SCRIPT_MODULES(declarada comconstna linha 1544). -
Como o interpretador JavaScript ainda não executou a linha 1544, a constante está na Temporal Dead Zone (TDZ), lançando o erro:
Uncaught ReferenceError: Cannot access 'WIDGET_SCRIPT_MODULES' before initialization.
-
-
TDZ com
total_sessoes:-
Paralelamente,
pageModificationContainerMove()agenda umsetTimeoutna linha 2203 que executatotal_sessoes = totalDeSessoes(). -
A variável
total_sessoesé declarada comletna linha 2054. -
Devido ao erro anterior de
WIDGET_SCRIPT_MODULESinterromper a inicialização principal do script, a linha 2054 nunca é atingida. Consequentemente, quando o timer do timeout executa,total_sessoesainda não foi inicializado, lançando:Uncaught ReferenceError: Cannot access 'total_sessoes' before initialization.
-
2. Solução Proposta
2.1 Reorganização da Ordem de Inicialização no html-editor-interface.js
A solução definitiva consiste em adiar o kickoff do editor (a chamada de contentPageTabHandler()) para o final do carregamento do arquivo. Isso garante que todas as constantes, variáveis e funções declaradas localmente no escopo do ready estejam inicializadas e fora de suas respectivas Temporal Dead Zones.
-
Remover a chamada síncrona de
contentPageTabHandler();localizada na linha 739. -
Mover esta chamada para o final do bloco
$(document).ready(...)(logo após a execução do wrapper autoinvocável de imagepick, logo antes de fechar o ready na linha 2729).
Código a ser modificado:
Remoção:
// Local original (próximo à linha 739):
function contentPageTabHandler() {
// ...
}
- contentPageTabHandler();
window.contentPageTabHandler = contentPageTabHandler;Inclusão no final do arquivo (próximo à linha 2728):
// Fim do arquivo:
modal.dimmer('show');
modal.modal('show');
}
})();
+ // Inicializar a aba ativa após todo o script estar carregado e variáveis declaradas
+ contentPageTabHandler();
});3. Verificação de Sucesso
-
O script deve passar na checagem de sintaxe estática do Node:
node --check gestor/assets/interface/html-editor-interface.js -
Carregar o Editor HTML Visual no navegador e abrir as ferramentas de desenvolvedor (F12).
-
Confirmar que não há erros de inicialização (
ReferenceError) no console. -
Validar se a pré-visualização de widgets e a troca de abas continuam funcionando perfeitamente.