JavaScriptMódulos e Errosavancado

Sistema de plugins com módulos

Sistemas que aceitam plugins geralmente carregam código sob demanda, sem saber antecipadamente quais módulos serão usados. Com import() dinâmico, você pode baixar e executar funcionalidades extras só quando o usuário as solicita, reduzindo o tempo de carregamento inicial e permitindo extensibilidade real — como editores de código que instalam temas ou ferramentas externas.

O PROBLEMA

Sistema onde plugins são módulos carregados com import() dinâmico.

EXEMPLO

async function carregarPlugin(caminho) {
  const plugin = await import(caminho);
  plugin.init(app);
}

SOBRE O CONCEITO

O import() dinâmico retorna uma Promise que resolve no módulo importado. Por isso, é obrigatório usar await dentro de uma função async para obter o conteúdo — do contrário, plugin será uma Promise pendente e plugin.init() falhará, já que Promises não têm o método init. O erro comum é exatamente não aguardar a resolução: const plugin = import(caminho); devolve a Promise, não o módulo. Com try/catch, você captura falhas de rede ou sintaxe, garantindo que a aplicação continue funcionando mesmo se um plugin estiver corrompido. A combinação de async/await com import() torna o sistema de plugins limpo e síncrono na leitura, sem bloquear a execução.

RESOLUÇÃO

Mais exercícios de Módulos e Erros

JSM003 · BásicoTipos de erroJSM005 · BásicoError propertiesJSM006 · BásicoExport nomeadoJSM008 · BásicoImport * as
Ver todos os exercícios de JavaScript