Como fazer o Node.js reconhecer imports ES6 sem usar require?

O Node.js permite usar imports ES6 em vez de require ativando ES Modules no package.json ou utilizando a extensão .mjs.

Como fazer o Node.js reconhecer imports ES6 sem usar require?

Por padrão, o Node.js utiliza CommonJS (require e module.exports) para manipulação de módulos. No entanto, se deseja utilizar a sintaxe moderna de ES Modules (import/export), é necessário realizar algumas configurações.

Habilitando ES Modules no Node.js

Opção 1: Adicionar "type": "module" no package.json

A maneira mais simples de ativar ES Modules no Node.js é adicionar a seguinte configuração ao package.json:

{
  "type": "module"
}

Com isso, será possível utilizar import e export sem precisar do require.

Opção 2: Usar arquivos com extensão .mjs

Outra alternativa é renomear seus arquivos para .mjs, pois o Node.js reconhece essa extensão como ES Modules.

Exemplo:

// math.mjs
export function somar(a, b) {
    return a + b;
}

E para importar em outro arquivo:

// app.mjs
import { somar } from './math.mjs';
console.log(somar(5, 3));

Importando pacotes npm com ES Modules

Se estiver utilizando pacotes npm, é necessário importar corretamente:

import express from 'express';
const app = express();

Certifique-se de que o pacote suporta ES Modules. Caso contrário, será necessário utilizar require ou procurar uma alternativa compatível.

Diferenças entre ES Modules e CommonJS

Característica CommonJS (require) ES Modules (import/export)
Sintaxe de importação require import
Sintaxe de exportação module.exports export
Tipo de carregamento Síncrono Assíncrono
Suporte no Node.js Padrão Requer configuração

Conclusão

O uso de import/export no Node.js oferece uma sintaxe mais moderna e alinhada com o JavaScript. Para habilitar ES Modules, basta adicionar "type": "module" no package.json ou utilizar a extensão .mjs. Essa abordagem torna o código mais compatível com navegadores e frameworks modernos.

A adoção dos ES Modules no Node.js foi uma grande mudança para desenvolvedores que estavam acostumados com o require. Durante anos, o CommonJS foi o padrão, mas conforme o JavaScript evoluiu, a necessidade de unificar os módulos entre backend e frontend se tornou evidente.

Hoje, frameworks modernos como Next.js e NestJS já utilizam ES Modules por padrão. Com isso, aprender a configurar e utilizar import/export no Node.js é essencial para acompanhar as tendências do desenvolvimento web.

Mesmo que o suporte ao CommonJS continue no Node.js, a tendência é que ES Modules se tornem o padrão definitivo no futuro, devido à sua compatibilidade e eficiência.

Algumas aplicações:

  • Criação de APIs modernas compatíveis com JavaScript
  • Melhor organização e modularização de código
  • Integração mais fácil com frameworks modernos
  • Uso consistente de módulos entre frontend e backend
  • Melhoria na performance em grandes aplicações

Dicas para quem está começando

  • Adicione "type": "module" no package.json para habilitar ES Modules.
  • Se precisar manter CommonJS e ES Modules, crie arquivos .cjs e .mjs separados.
  • Use sempre extensões .js ou .mjs corretamente para evitar erros.
  • Antes de usar import/export, verifique se os pacotes npm suportam ES Modules.
  • Se precisar importar dinamicamente, utilize import() dentro de funções assíncronas.

Contribuições de Tatiane Souza

Compartilhe este tutorial: Como fazer o Node.js reconhecer imports ES6 sem usar require?

Compartilhe este tutorial

Continue aprendendo:

Como funciona o module.exports no Node.js?

O module.exports no Node.js permite exportar funções, objetos e classes para serem reutilizados em outros arquivos do projeto.

Tutorial anterior

Como carregar variáveis de ambiente no Node.js?

As variáveis de ambiente no Node.js permitem armazenar configurações sensíveis, como credenciais e URLs, sem expô-las no código-fonte.

Próximo tutorial