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