Conn2Flow
Navegação das docs

SDD

req-045: Correção de Erros de Inicialização (Temporal Dead Zone - TDZ) no Editor HTML Visual

Este documento especifica os requisitos para corrigir erros de ReferenceError ("Cannot access ... before initialization") reportados no console do navegador ao carregar a…

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 () { ... }).

  1. 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 sincronamente previewHtml() e montarWidgetAssetsHead().

    • montarWidgetAssetsHead() tenta ler a constante WIDGET_SCRIPT_MODULES (declarada com const na 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.

  2. TDZ com total_sessoes:

    • Paralelamente, pageModificationContainerMove() agenda um setTimeout na linha 2203 que executa total_sessoes = totalDeSessoes().

    • A variável total_sessoes é declarada com let na linha 2054.

    • Devido ao erro anterior de WIDGET_SCRIPT_MODULES interromper a inicialização principal do script, a linha 2054 nunca é atingida. Consequentemente, quando o timer do timeout executa, total_sessoes ainda 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.

  1. Remover a chamada síncrona de contentPageTabHandler(); localizada na linha 739.

  2. 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

  1. O script deve passar na checagem de sintaxe estática do Node:

    node --check gestor/assets/interface/html-editor-interface.js
  2. Carregar o Editor HTML Visual no navegador e abrir as ferramentas de desenvolvedor (F12).

  3. Confirmar que não há erros de inicialização (ReferenceError) no console.

  4. Validar se a pré-visualização de widgets e a troca de abas continuam funcionando perfeitamente.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada